class Person
def one
@var = 99
self.two
end
private
def two
p @var
end
end
p=Person.new
p.one
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我收到错误 main.rb:4:in one': private method Two' Called for #<Person:0x00000000965a28 @var=99> (NoMethodError)
from main.rb:12:in `'
class Person
def one
@var = 99
two
end
private
def two
p @var
end
end
p=Person.new
p.one
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到的输出为 99。因此,当 p.one 调用时,它会转到方法一,当它找到没有任何接收者对象的方法二时执行它(这意味着方法二将 self 作为对象)并且成功执行该方法。
但是当我手动给出 self.two 时,它给了我错误,为什么?
两个 VS self.two 的方法调用有什么区别?
ruby ×1