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

前端之家收集整理的这篇文章主要介绍了ruby – 为什么foo不再没有了 – 或者在功能中起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么在下面的代码代码替代它的定义?
  1. def foo
  2. def foo
  3. 1
  4. end
  5. end

第一次foo是零

  1. foo
  2. => nil
  3.  
  4. foo.foo
  5. => 1

现在再说一遍foo:

  1. foo
  2. => 1

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

解决方法

  1. def foo
  2. p "about to redef foo"
  3. def foo
  4. 1
  5. end
  6. end
  1. foo
  2. "about to redef foo"
  3. => nil
  4. foo
  5. => 1

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

猜你在找的Ruby相关文章