加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 在循环中循环并在深循环中分配变量

发布时间:2020-12-17 02:33:12 所属栏目:百科 来源:网络整理
导读:我有一块像这样的代码(这是工作版本) @full_user_schedule[0].attributes.each do |event_name,attending| if attending sessions_hash.each do |id,name| event_name = event_name.sub(name,id.to_s) if event_name.include? name end @user_schedule.merge
我有一块像这样的代码(这是工作版本)

@full_user_schedule[0].attributes.each do |event_name,attending|
   if attending
     sessions_hash.each do |id,name|
       event_name = event_name.sub(name,id.to_s) if event_name.include? name 
     end
     @user_schedule.merge!(event_name => attending)
   end
end

当我尝试在sessions_hash.each语句中设置变量event_id时,我无法将其分配到该循环之外(获得未知变量警告).我想知道为什么会这样,以及如何规避它.

下面是一个失败的例子(事件虽然日志显示变量设置正确),但我没有在创建它的循环之外访问它.

@full_user_schedule[0].attributes.each do |event_name,name|
       event_id = event_name.sub(name,id.to_s) if event_name.include? name 
     end
     @user_schedule.merge!(event_id => attending)
   end
end

我试图显式返回event_id,但退出循环.我不明白的是什么?

解决方法

块实际上是一种匿名函数,因此它有自己的作用域,但它可以访问周围作用域中的变量.

只需在块启动之前初始化event_id,使其成为父方法的元素.

event_id = nil
@full_user_schedule[0].attributes.each do |event_name,attending|
   ...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读