我正在尝试研究如何将块传递给方法。
基本上我有一个方法,而不是让用户写这个:
def user_config
@config[:config_value] = "what they want"
end
我希望他们能够做到这一点:
user_config do
:config_value => "what they want"
end
但我不知道如何处理方法中的块。
答案 0 :(得分:3)
使用yield调用块,所以这个:
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哈希值中。
答案 1 :(得分:3)
虽然@diegogs是对的,他的解决方案也可以正常使用,但我会避免在这么简单的情况下使用块。
def user_config(config_hash)
config_hash.each do |k,v|
@config[k] = v
end
end
会做得很好
user_config :config_value => "what they want", ...
那怎么样?