Я читал, что «puts» - это частный метод экземпляра модуля Kernel (и, следовательно, Object, поскольку Object смешивает в ядре).Если метод «puts» является методом частного экземпляра, почему мы можем его вызвать из любого места?
Именно поэтому, когда мы вызываем puts, мы не указываем явный приемник. Мой вопрос: если это метод частного экземпляра, как это возможно, мы можем назвать его из любой другой области? Итак, мы можем сделать:
class Test
puts "hello" # self is Test. So, we are calling self.puts "hello" -
end
Что мне здесь не хватает? Как это возможно? Мы вызываем метод частного экземпляра?
EDIT: возникает
Тот же вопрос, если я это сделать:
class Object
private
def talk
puts "hi there"
end
end
class Test
talk # outputs 'hi there'
end
Почему возможно, что из класса Test мы можем назвать частный метод из класса Object?
Где вы прочли это частный метод? Это не. Это даже не метод экземпляра, поскольку ядро - это модуль, а не класс. Доказательство: 'Kernel.puts" Доказательство ". – Amadan
Потому что вся программа Ruby на самом деле происходит в контексте экземпляра класса 'Object' (не уверен, поэтому я поставил комментарий, а не ответ). –
«puts and print - встроенные методы частных экземпляров ядра - не как те, которые вы пишете, Объекта, а ядра». - Rubyist 1.9 - The Well Grounded Rubyist ... –