class A def val 10 end def test val = val endendp A.new.test
此代码打印为nil.为什么?!
解决方法 我认为局部变量一旦声明就会被声明.在ruby中,查找首先查找局部变量,如果它存在则使用它,如果不存在则查找方法.这意味着val = val将第一个val声明为local,然后左手val将其匹配(不确定它我应该检查 ruby under microscope以确定)如果你试试
class A def val 10 end def test back = [] x = val back << x val = x + 1 back << val x = val back << x endendp A.new.test
然后一切都很好,打印[10,11,11],这意味着第一个x = val调用方法,第二个调用局部变量,大概是.
总结以上是内存溢出为你收集整理的ruby – 方法的局部变量,与另一个方法同名全部内容,希望文章能够帮你解决ruby – 方法的局部变量,与另一个方法同名所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)