Я понимаю в среде выполнения верхнего уровня, self
- это некоторый предопределенный объект класса Object
.
puts self.class.inspect #=> Object
А
puts self.class.ancestors.inspect #=> [Object, Kernel, BasicObject]
Но почему я не могу найти метод «пут», подобный этому?
puts self.class.instance_methods.include?(:puts) #=> false
Я ожидал true
, потому что Kernel
равно included
в Object
, может кто-нибудь сказать мне, почему он возвращает false
?
решаемые
puts
определен как метод частного экземпляра в Kernel
.
Kernel.private_instance_methods.include?(:puts) #=> true
Интересно, почему в документации по ядру ruby есть список puts
в списке методов общего экземпляра Kernel