我想在写入器访问器中做一些检查。我的第一个想法是返回一个 bool 值。
class MyClass
def var=(var)
@var = var
# some checking
return true
end
end
m = MyClass.new
retval = (m.var = 'foo')
=> "foo"
我可以在写入器访问器中设置返回值吗?如果是,我怎样才能得到这个值?
最佳答案
我会使用 set_var(var) 而不是您正在尝试做的事情,假定属性编写器可以正常工作。您尝试做的事情对于下一个使用您的代码的穷人来说是不标准和不明显的。 (它可能只是你自己)如果发送了错误的输入或发生了一些相当特殊的事情,我会抛出一个异常。
你想要这种行为
Correct
>>temp = object.var = 7
=> 7
Wrong
>>temp = object.var = 7
=> false
= 运算符应始终返回传递给它的值。 Ruby 使用隐式返回,这在编程语言中并不常见。使用 method=()
时仔细检查返回值。
关于ruby - 有没有办法让 Ruby 访问器返回 set 变量以外的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/197678/