我的问题是,赋值时可以修改我的值,但是#bar=
返回的值将不是我的隐式返回值之一,而是value
参数。
class Foo
def bar=(value)
@bar = "these not the droids you are looking for"
end
def bar
@bar
end
end
foo = Foo.new
puts foo.bar = 42 # 42
puts foo.bar # "these not the droids you are looking for"
我希望最后一行打印"these not the droids you are looking for"
而不是42
。有可能吗?
答案 0 :(得分:3)
有可能吗?
不,这就是在ruby中对待赋值运算符的方式。您可以从bar=
切换到set_bar
。现在,这只是一个普通方法,不会在赋值操作中忽略其返回值(因为它不能在其中使用)。
或者您可以执行类似foo.send("bar=", 42)
的操作,但是请不要这样做。