【问题标题】:Ruby's equivalent of Groovy's metaclass.method_nameRuby 相当于 Groovy 的 metaclass.method_name
【发布时间】:2013-10-10 11:28:41
【问题描述】:

我有一个方法,其中symbol_price 是一个哈希值,键为符号,价格为值。

def get_price_for_symbol(symbol_price, symbol)
  symbol_price[symbol]
end

在 Groovy 中,如果我们想模拟出我们在测试类中编写的主类方法 get_price_for_symbol

object.metaClass.get_price_for_symbol = { symbol_price, symbol -> 99.987 }

我们如何在 Ruby 中做类似的事情?

【问题讨论】:

  • 是的。符号价格是测试类中的哈希
  • 我的歉意(写得很红脸)。不知何故,我没有注意到哈希是一个论点!我建议你删除你的评论,然后我会删除这条。

标签: ruby metaprogramming metaclass


【解决方案1】:

Ruby 中最等效的事情是重新定义测试中的方法,但您应该考虑使用依赖注入来避免做这种事情。无论如何,我们开始吧:

instance = Object.new

def instance.get_price_for_symbol(_, _) 
  99.987
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2012-06-07
    • 2020-02-16
    • 2012-10-05
    • 2019-07-04
    • 2011-10-05
    • 2017-02-06
    相关资源
    最近更新 更多