ruby - 有没有办法让 Ruby 访问器返回 set 变量以外的东西?

标签 ruby class accessor

我想在写入器访问器中做一些检查。我的第一个想法是返回一个 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/

相关文章:

javascript - 从 URL 中抓取文本和媒体

ruby - 如果第一个字符是 Ruby 中的大写字母,如何删除前 3 个字符

java - 编译错误 "incompatible types"

oop - 如何避免 getter 和 setter

python - 从给定日期提取日、月和年的最快方法是什么?

ruby-on-rails - rails : How to ensure clean state for test database?

ruby - Mechanize HTTP 未找到 404 链接

c# - 在 C# 中强制实现没有接口(interface)或抽象类的方法

c++ - 迭代类中的每个对象

c# - 如何使用 CodeDom 更改访问器的可访问性?