浏览 1728 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-03-08
初学ruby
在看到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 #.......这个错误呢? 刚开始学,可能很多是概念上的错误,希望能帮我解答一下,谢谢 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间: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模块的方法来实现在类外访问,呵呵,谢谢楼上两位,尤其是透明!
|
|
| 返回顶楼 | |






