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| ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |