我正試圖解決如何將塊傳遞給方法。將塊傳遞給方法
基本上我有一個方法,而不是讓用戶寫:
def user_config
@config[:config_value] = "what they want"
end
我希望他們能夠做到這一點:
user_config do
:config_value => "what they want"
end
但我不知道怎麼樣在方法中使用塊。
我正試圖解決如何將塊傳遞給方法。將塊傳遞給方法
基本上我有一個方法,而不是讓用戶寫:
def user_config
@config[:config_value] = "what they want"
end
我希望他們能夠做到這一點:
user_config do
:config_value => "what they want"
end
但我不知道怎麼樣在方法中使用塊。
塊被調用時的產量,所以這一點:
def user_config
yield.each do |k, v|
@config[k] = v
end
end
這樣調用
user_config do
{:config_value => "what they want"}
end
應該工作,只要你想它。該塊返回
{:config_value => "what they want"}
您將哈希中的每個關鍵字取爲@config哈希中的值。
雖然@diegogs是正確的,他的解決方案將工作得很好,我會避免在這種簡單的情況下使用塊。
def user_config(config_hash)
config_hash.each do |k,v|
@config[k] = v
end
end
會做得很好
user_config :config_value => "what they want", ...
怎麼樣?
我不確定我是否理解這個問題,但爲什麼用戶會定義*方法?此外,塊版本看起來非常像用戶只是簡單地傳遞一個散列。那麼爲什麼不這樣做,而不是一個塊? – Telemachus 2010-07-08 10:19:24