Chinaunix
标题:
闭包里的块变量能传到闭包外吗?
[打印本页]
作者:
alinunix
时间:
2013-10-23 14:13
标题:
闭包里的块变量能传到闭包外吗?
def check_status
(1..5).each do |x;sign|
......
sign = 1
end
return sign
end
check_status
test.rb:7:in `check_status': undefined local variable or method `sign' for main:Object (NameError)
from test.rb:10:in `<main>'
如果闭包外没有定义sign,return是就会报错,闭包里的局部变量sign有办法穿过作用域传到闭包外吗?
作者:
bikong0411
时间:
2013-10-24 09:40
[3] pry(main)> def test()
[3] pry(main)* sign=0
[3] pry(main)* (1..5).each {|x|
[3] pry(main)* sign = 1
[3] pry(main)* }
[3] pry(main)* sign
[3] pry(main)* end
=> nil
[4] pry(main)> test()
=> 1
作者:
alinunix
时间:
2013-10-24 17:30
回复
2#
bikong0411
这个还是相当于在闭包外先定义了sign,所以闭包里的sign已经不是局部变量了。
我想问的是闭包里的局部变量有什么方法能传出来吗?
作者:
bikong0411
时间:
2013-10-24 21:41
回复
3#
alinunix
那样的话,你说的根本不可能,因为局部作用域
作者:
alinunix
时间:
2013-10-25 14:40
bikong0411 发表于 2013-10-24 21:41
回复 3# alinunix
嗯,可能是这样的,呵呵,我也只是问问。
作者:
Sevk
时间:
2013-10-25 16:48
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2