浏览 3877 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-06
在看到ruby的<=>这个运算符的调用上有些疑惑,希望各位能解答一下 class Person def initialize(name,age) @name = name @age = age end def <=>(other) self.age <=> other.age end end test1 = Person.new("test1", 20) test2 = Person.new("test2", 18) test1.<=>(test2) 上面的<=>应该是定义的方法名吧,我理解的other这个参数是Person类的另一个实例化对象吧 但是我自己定义了两个实例化对象test1和test2 调用test1的<=>方法并把test2这个实例化对象传进去,为什么程序总报<=>:undefine method 'age' for #.......这个错误呢? 刚开始学,可能很多是概念上的错误,希望能帮我解答一下,谢谢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-06
attr_reader :age |
|
返回顶楼 | |
发表时间:2007-03-06
all instant field in ruby is not visible for others but itself, you should define a method whose name is the same as the field name.
|
|
返回顶楼 | |
发表时间:2007-03-06
谢谢透明,呵呵,解决了,哦 明白了,ruby方法中的变量在类外部是无法直接访问的,设置age属性为只读,其实是调用Module模块的方法来实现在类外访问,呵呵,谢谢楼上两位,尤其是透明!
|
|
返回顶楼 | |