技术开发 频道

二十分钟 教你Ruby快速入门


窥视对象的内部

对象中的实例变量总是隐藏于其中,但也并非毫无踪迹可寻,通过审查(inspect)对象便会见到它们。当然还有其它的访问方法,但是Ruby采用了良好的面向对象的方式来保持数据的隐藏性。



喔!这么多方法,可是我们只定义了两个方法呀?其它的方法又出自何处?不要担心,instance_methods方法列出了Greeter对象的所有方法,其中包括父类中定义的方法。如果我们只想对Greeter类的方法进行列表的话,那么把false作为参数调用instance_methods方法即可。false意味着我们不需要父类定义的方法。



哈哈,这才是我们想要的。下面让我们看看Greeter对象能回应哪些方法:



它知道say_hi、to_s(此方法将对象转换为字符串,是任何对象都必备的默认方法,很想Java中的toString方法),但它不知道name。

随时修改类定义

如何才能查看或者修改name呢?Ruby提供了访问对象变量的简单方法:



在Ruby语言中,你能够多次打开某个类并修改它。而修改所带来的变化将应用在此后建立的任何新对象中、甚至现存的此类对象中。下面让我们建立一个新对象并访问它的@name属性。


我们通过使用attr_accessor定义了两个方法:

“.name”用来获取name属性值;

“.name=”用来设置namee属性值。

这很类似在Java类中访问被Public修饰的成员变量。

0
相关文章