【发布时间】:2021-12-20 07:16:33
【问题描述】:
方法 puts 在模块 Kernel 中被定义为私有。所以没有人可以执行其他对象 puts - 这很清楚。但是为什么尽管 self 和 slf 具有相同的 ID,但下面的示例没有运行?它们不是同一个对象吗?
>> slf = self
>> slf.puts
(irb):206:in `<main>': private method `puts' called for main:Object (NoMethodError)
from C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/irb-1.3.5/exe/irb:11:in `<top (required)>'
from C:/Ruby30-x64/bin/irb:25:in `load'
from C:/Ruby30-x64/bin/irb:25:in `<main>'
>> p self.object_id
320
>> p slf.object_id
320
【问题讨论】: