【发布时间】:2012-03-27 22:33:49
【问题描述】:
我正在尝试实现一个 method_missing 将美元转换为其他货币,例如 5.dollars 产生 5,5.yen 产生 0.065 5.euro 6.56 等等。这是我现在可以做到的。现在我需要实现它,但例如 5.dollars.in(:yen)。
这就是我现在拥有的:
class Numeric
@@currencies = {'yen' => 0.013, 'euro' => 1.292, 'rupee' => 0.019}
def method_missing(method_id)
singular_currency = method_id.to_s.gsub( /s$/, '')
if @@currencies.has_key?(singular_currency)
self * @@currencies[singular_currency]
else
super
end
end
end
谁能解释我如何做到这一点?
PS:我希望你不要给我代码,而是一个解释,所以我可以自己确定它是如何完成的。
【问题讨论】:
-
我正在解决同样的问题,有趣的是,这篇文章现在是谷歌“ruby method_missing”的前 10 名。
标签: ruby metaprogramming method-missing