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

前端之家收集整理的这篇文章主要介绍了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.

猜你在找的Ruby相关文章