为什么在下面的代码片段foo取代了它的定义?
def foo
def foo
1
end
end
Run Code Online (Sandbox Code Playgroud)
这是第一次foo没有
foo
=> nil
foo.foo
=> 1
Run Code Online (Sandbox Code Playgroud)
现在,如果我foo再次打电话:
foo
=> 1
Run Code Online (Sandbox Code Playgroud)
你可以看到foo不再是零了.谁可以给我解释一下这个?谢谢.
def foo
p "about to redef foo"
def foo
1
end
end
Run Code Online (Sandbox Code Playgroud)
foo
"about to redef foo"
=> nil
foo
=> 1
Run Code Online (Sandbox Code Playgroud)
此外,当您调用时foo.foo,似乎您正在尝试访问内部foo方法,但它不会那样工作.您的foo方法实际上已定义Object,因此您实际上正在调用1.foo.
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |