令人惊讶的是,在所有其他情况下 irb 都会回显方法的返回值。为什么通过 setter 进行分配的行为会有所不同?
我正在使用 Ruby 2.2.2。
irb(main):001:0> def x=(value); puts "puts_from_x"; "returned_string_from_x"; end
=> nil
irb(main):002:0> self.x = 3
puts_from_x
=> 3
update
我突然意识到它与 rhs 相呼应,因为那是实际返回值。为什么是这样?
按照@Matz 的回复thread https://groups.google.com/d/msg/comp.lang.ruby/cSnpqgspnhw/5be3F3hQSPYJ :
Setter 总是返回最初分配给它们的值
这是一个设计选择。我们将分配的值定义为
右边表达式的值,而不是返回值
分配方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)