ruby – 为什么foo不再没有了 – 或者在功能中起作用

为什么在下面的代码代码替代它的定义?
def foo
  def foo
    1
  end
end

第一次foo是零

foo
=> nil

foo.foo
=> 1

现在再说一遍foo:

foo
=> 1

你可以看到foo不再是零.谁可以给我解释一下这个?谢谢.

解决方法

def foo
  p "about to redef foo"
  def foo
    1
  end
end
foo
"about to redef foo"
=> nil
foo
=> 1

此外,当您调用foo.foo时,似乎您正在尝试访问内部foo方法,但它不会以这种方式工作.你的foo方法实际上是在Object上定义的,所以你实际上是调用1.foo.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...