首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将块传递到方法中

将块传递到方法中
EN

Stack Overflow用户
提问于 2010-07-08 17:54:55
回答 2查看 918关注 0票数 0

我正在尝试弄清楚如何将块传递到方法中。

基本上我有一个方法,而不是让用户写这个:

代码语言:javascript
运行
复制
def user_config
    @config[:config_value] = "what they want"
end

我希望他们能够这样做:

代码语言:javascript
运行
复制
user_config do
    :config_value => "what they want"
end

但我不知道如何在方法中使用块。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-08 18:04:13

调用块时会产生yield,因此如下所示:

代码语言:javascript
运行
复制
def user_config
    yield.each do |k, v|
        @config[k] = v
    end
end

像这样调用

代码语言:javascript
运行
复制
user_config do
    {:config_value => "what they want"}
end

应该像你想要的那样工作。块返回

代码语言:javascript
运行
复制
{:config_value => "what they want"}

获取散列中的每个键,并在@config散列中指定它的值。

票数 3
EN

Stack Overflow用户

发布于 2010-07-08 18:23:44

虽然@diegogs是正确的,并且他的解决方案将工作得很好,但我还是会避免在这种简单的情况下使用块。

代码语言:javascript
运行
复制
def user_config(config_hash)
  config_hash.each do |k,v|
    @config[k] = v
  end
end

将会做得很好

代码语言:javascript
运行
复制
user_config :config_value => "what they want", ...

那个怎么样?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3202426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档