2016-08-05 115 views
2

我模塊CurrencyExchange用以下方法未定義的局部變量或方法模塊

CURRENCIES = %w(uah rub eur usd) 

def available_currencies 
    CURRENCIES.join(' ').downcase.split.permutation(2) 
end 

,當我想用​​available_currencies

define_method

available_currencies.each do |(c1, c2)| 
    define_method(:"#{c1}_to_#{c2}") do |cr| ... end end 

我有一個錯誤

undefined local variable or method `available_currencies' 
for CurrencyExchange:Module (NameError) 

但是當我使用它像

 CURRENCIES.join(' ').downcase.split.permutation(2).each do |(c1, c2)| 
    define_method(:"#{c1}_to_#{c2}") .... end end 

它工作正常

爲什麼會發生?

+0

這個當前的邏輯有一些問題。 請在此處粘貼'currency_exchange.rb'完整文件。 –

+0

你的代碼看起來很好。當你發現問題時不要忘記回答。 +1'排列':) – user1201917

回答

1

我認爲你需要寫def self.available_currencies

0

你試試在類中創建其他方法和紅寶石環路的一類方法.available_currencies搜索。

您必須將類方法.available_currencies更改爲實例方法#available_currencies或在初始化程序中創建方法。

方法1:

class MyClass 
    def self.available_currencies 
    # Your logic... 
    end 

    # Your logic... 
end 

方法2:

class MyClass 
    def init 
    available_currencies.each do |c| 
     define_method(c) do 
     # Whatever you want to do ... 
     end 
    end 
    end 

    def available_currencies 
    # Your logic... 
    end 
end 

我建議你第一種方式,因爲你可能要使用的貨幣的課程。我會推薦你​​第二種方式,如果你想爲不同的實例使用不同的貨幣。

快樂編碼:)

相關問題