ruby - 元编程 Ruby 便捷方法

标签 ruby metaprogramming

在我的程序中,我使用了状态机,并且有许多方便的方法。我目前正在创建一长串“?”模型中的方法。

def purchase_ready?
    self.current_state == 'purchase_ready'
end

def completed?
    self.current_state == 'completed'
end

def region_prepared?
   self.current_state == 'region_prepared'
end

执行此操作的元编程方法是什么?

最佳答案

...这是一个答案!

感谢这个博客:http://rohitrox.github.io/2013/07/02/ruby-dynamic-methods/

[:purchase_ready, :completed, :region_prepared].each do |method|
   define_method "#{method}?" do
      self.current_state == "#{method}"
   end
end

关于ruby - 元编程 Ruby 便捷方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29352824/

相关文章:

c++ - constexpr 技巧

ruby - 反转数组的最有效方法?

C++11:模板中的(递归)指针算术 (TMP)

ruby - 了解 Ruby 闭包

ruby - 无法使用 key 与 Ruby 和 net/ssh 连接

ios - 如何将带有类名称的字符串转换为类类型本身?

Ruby 捕获 NoMethodError 并从发生异常的地方继续执行

c++ - 在运行时获取模板元编程编译时常量

ruby - 如果键除了大小写之外都相同,则合并哈希键和值

ruby - 如何使用 Selenium 在 Ruby Capybara 中启用 ChromeDriver 日志记录?