论坛首页 编程语言技术论坛

初学Ruby对ruby中的<=>符号有些疑惑

浏览 3879 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-06  
初学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 #.......这个错误呢?
刚开始学,可能很多是概念上的错误,希望能帮我解答一下,谢谢
   发表时间:2007-03-06  
attr_reader :age
0 请登录后投票
   发表时间: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.
0 请登录后投票
   发表时间:2007-03-06  
谢谢透明,呵呵,解决了,哦 明白了,ruby方法中的变量在类外部是无法直接访问的,设置age属性为只读,其实是调用Module模块的方法来实现在类外访问,呵呵,谢谢楼上两位,尤其是透明!
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics