class A def m=(value) @m=value 10 end end a=A.new a.m=7 这个方法怎么返回的是 7 而不是 10 呢,ruby 不是总是返回最后一个值吗?求解释!
这是赋值方法 在以前 Ruby 版本与现在新的对比 返回的值是有区别的 可参考 http://www.cnblogs.com/timsheng/archive/2013/03/25/2981195.html
这确实是 ruby 变态的地方:
class A
def val=(v)
end
def val
end
end
a = A.new
a.val = 100
# => 100
a.val
# => nil
更变态的来了:
class A
def val=(v)
@member = v.upcase
end
def val
@member
end
end
a = A.new
a.val = 'hello'
# => 'hello'
a.val
# => 'HELLO'
这个跟平常思维不一致!
你们可能会说,val 只是个方法,方法可以返回任何东西。
但我还是觉得这跟玩似的!