了解Ruby嵌套函数
发布时间:2020-12-17 01:32:04 所属栏目:百科 来源:网络整理
导读:我现在正在学习ruby.我试图了解闭包的工作方式,以及它们与函数的区别.我完全知道闭包应该通过proc或lambda来实现. 我想要深入了解ruby.因此,我检查各种非正统的代码.我试图理解为什么第3行工作而第5行是错误. x=123def b(x) p x def a(u) p x # why is this
我现在正在学习ruby.我试图了解闭包的工作方式,以及它们与函数的区别.我完全知道闭包应该通过proc或lambda来实现.
我想要深入了解ruby.因此,我检查各种非正统的代码.我试图理解为什么第3行工作而第5行是错误. x=123 def b(x) p x def a(u) p x # why is this an error?!?!? end a 4 end b 1 >如果a无法访问b的参数,为什么不访问全局x = 123? 这纯粹是一个学习练习,我这样做是为了了解幕后发生的事情. 解决方法
这就是所谓的“范围门”.基本上,当您开始定义方法/类/模块时,会创建一个新范围,并且无法访问其他范围内的所有局部变量.这不适用于实例/全局变量,您将继续访问这些变量.
由于lambda不是方法,因此它不会创建新范围并重新使用现有范围. 也,
x = 123 def b(x) p x # this "x" is "x the parameter",not "x the local variable from outer scope" # that's why it works. If you tried to access the local var,it wouldn't work. def a(u) p x # like here,see? Doesn't work. end a 4 end b 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |