我希望拥有动态方法名称,例如usd_to_eur
eur_to_usd
我有currencies = ['uah','rur','usd','eur']
并希望将其混合
我尝试使用define_method
但不确定如何正确执行此操作。
答案 0 :(得分:10)
class MyClass
CURRENCIES = %w|uah rur usd eur|
CURRENCIES.permutation(2).each do |(c1, c2)|
define_method(:"#{c1}_to_#{c2}") do
puts "Hi, I am #{__callee__} method"
end
end
end
现在您已定义了12种方法。 E.g:
MyClass.new.eur_to_usd
#⇒ Hi, I am eur_to_usd method