Rails动态方法名

3

我希望能有像 usd_to_eureur_to_usd 这样的动态方法名。

我有一个 currencies = ['uah','rur','usd','eur'] 的列表,希望将它们组合起来。

我尝试使用 define_method 实现,但不确定如何正确实现。


这很大程度上取决于这些方法的实际内容。它们有共同点吗? - Aleksei Matiushkin
通常情况下,我猜只有“_to_”和“currency1_to_currency2”。 - user
我在询问“方法体”。 - Aleksei Matiushkin
1个回答

11
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种方法。例如:

MyClass.new.eur_to_usd
#⇒ Hi, I am eur_to_usd method

@mudasobwa 回答得非常好。 - blnc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接