Nis*_*yay 3 ruby inheritance module singleton-methods
这是我的代码:
module Star
def Star.line
puts '*' * 20
end
end
module Dollar
def Star.line
puts '$' * 20
end
end
module At
def line
puts '@' * 20
end
end
include At
Dollar::line # => "@@@@@@@@@@@@@@@@@@@@"
Star::line # => "$$$$$$$$$$$$$$$$$$$$"
Dollar::line # => "@@@@@@@@@@@@@@@@@@@@"
line # => "@@@@@@@@@@@@@@@@@@@@"
Run Code Online (Sandbox Code Playgroud)
谁能解释我是如何得到这个结果的?我不明白这里的方法查找流程.
这就是我的看法:
Dollar::line
这个模块中没有定义这样的方法所以它正在调用,At::line因为你包含了这个模块.
Star::line
它使用Dollar模块的最后定义(它遵循原始Star定义,因此它被覆盖).
Dollar::line
第三次通话与第一次通话相同.
line
最后一个是At::line因为你做了一个包含.
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |