ruby – 方法的局部变量,与另一个方法同名

ruby – 方法的局部变量,与另一个方法同名,第1张

概述我试图找出 Ruby如何处理与self类中的方法具有相同名称的局部变量,并发现了一个我不理解的行为: class A def val 10 end def test val = val endendp A.new.test 此代码打印为nil.为什么?! 我认为局部变量一旦声明就会被声明.在ruby中,查找首先查找局部变量,如果它存在则使用它,如果不存在则查 我试图找出 Ruby如何处理与self类中的方法具有相同名称的局部变量,并发现了一个我不理解的行为:

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 – 方法的局部变量,与另一个方法同名所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1279988.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存