Ruby对象元素属性
Ruby中是没有属性(property/attribut)这样的东西。在Ruby中从对象外部不能直接访问实例变量或对实例变量赋值,需要通过该方法来访问对象的内部。假设有下面的例子:
1 | class HelloWorld |

在Ruby中,如果是括号内的参数,括号是可以直接省略的。所以,对于bob.name,由于Ruby中是没有属性的,其实我们调用的是bob.name()中.name()方法。对于bob.name = "Bob"实际是执行bob.name = ("Bob")方法,上面两个方法都没有定义所以会报错。另外比如一个简单的1 + 1并不是一个简单的数学运算,而是1.+(2),是执行了数字1的+方法,其中参数是2。那么在Ruby中,如何定义对实例变量的访问和变更呢?
1 | class HelloWorld |
上面的 def name方法就相当于我们所知道的getter方法,def name=就是我们所知道的setter方法。
但是如果实例变量太多,如果都这么定义岂不是很麻烦,所以Ruby为我们提供了简便定义的方法attr_reader,attr_writer,attr_accessor只要指定了变量名的符号,Ruby就会为我们定义响应的存储器。
定义
含义
attr_reader :name
只读(定义name方法)
attr_writeer :name
只写(定义name=方法)
attr_accessor:name
读写(定义以上连个方法)
1 | class HelloWorld |
- Post title:Ruby对象元素属性
- Post author:Varsion
- Create time:2020-07-23 11:25:49
- Post link:https://blog.varsion.cn/post/4c0576fa.html
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
Comments