ruby - 如何为名称以问号结尾的属性定义 setter?

标签 ruby

我正在尝试添加一个名为“已启用?”的属性吗?到同时具有 getter 和 setter 的模型。但是,当我执行以下操作时:

def enabled?= value
  # .. logic goes here ..
end

我收到语法错误,意外的“?”,需要“\n”或“;”

我应该怎么做?

最佳答案

是的,ruby 语法只允许 ? 在方法名称中,如果它是最后一个字符,所以 foo?= 是无效的。您可以做的一件事是定义 enabled?enabledisable(或 enable!disable! 如果你想强调它们是变异方法)。

如果这不符合您的需求,您可以只将方法命名为 enabled?enabled= 并忍受名称之间的轻微不一致。

关于ruby - 如何为名称以问号结尾的属性定义 setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3468658/

相关文章:

Windows 上的 ruby​​ 1.9 ri 对任何类一无所知

html - 如何使用 Nokogiri 删除节点

ruby-on-rails - 渲染静态页面时 Rails 路由冲突

ruby - 在 Ruby 中更优雅的方式来做到这一点

ruby-on-rails - 如何将任意用户定义的值传递给 CarrierWave 图像处理器?

ruby - 如何查看多维哈希是否具有 ruby​​ 值?

ruby - 获取 { } 大括号之间的内容

ruby 在哪里定义结构

ruby - 有什么方法可以确定哪个对象调用了方法?

ruby-on-rails - Rails 应用程序 View 中的 NoMethodError