ruby – 块中局部变量的范围
发布时间:2020-12-16 19:34:06 所属栏目:百科 来源:网络整理
导读:如果我有: 2.times do i ||= 1 print "#{i} " i += 1 print "#{i} "end 我得到1 2 1 2,而我期待1 2 2 3.为什么我在循环开始时失去了它的赋值?如果赋值发生在循环之外,它的行为与预期的一样,所以我猜它与范围有关,但我没有意识到循环有自己的范围.有人可以
如果我有:
2.times do i ||= 1 print "#{i} " i += 1 print "#{i} " end 我得到1 2 1 2,而我期待1 2 2 3.为什么我在循环开始时失去了它的赋值?如果赋值发生在循环之外,它的行为与预期的一样,所以我猜它与范围有关,但我没有意识到循环有自己的范围.有人可以澄清吗? 更新:感谢您的帮助.我的一部分困惑源于从Python进入Ruby,它没有块范围(我认为). 解决方法
看下面的代码:
2.times do p defined? i i ||= 1 p defined? i p "#{i} " i += 1 p "#{i} " end 输出: nil "local-variable" "1 " "2 " nil "local-variable" "1 " "2 " 这意味着在每次迭代中都会创建一个新的范围,并且我只知道该范围;这是由nil和“局部变量”证明的. 现在我是在block之外创建的,看看输出(没有来): i = nil 2.times do p defined? i i ||= 1 p defined? i p "#{i} " i += 1 p "#{i} " end 输出: "local-variable" "local-variable" "1 " "2 " "local-variable" "local-variable" "2 " "3 " 要了解更多关于|| = look (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |