@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) endend
当我尝试在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) endend
我试图显式返回event_ID,但退出循环.我不明白的是什么?
解决方法 块实际上是一种匿名函数,因此它有自己的作用域,但它可以访问周围作用域中的变量.只需在块启动之前初始化event_ID,使其成为父方法的元素.
event_ID = nil@full_user_schedule[0].attributes.each do |event_name,attending| ...总结
以上是内存溢出为你收集整理的ruby – 在循环中循环并在深循环中分配变量全部内容,希望文章能够帮你解决ruby – 在循环中循环并在深循环中分配变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)