Я расширил Kernel
сам по себе, и в определении метода экземпляра Kernel#abort
я назвал метод singleton Kernel.abort
:
module Kernel
extend self
def abort
puts "Press ENTER to exit..."
gets
Kernel.abort
end
end
abort
Когда я вызываю Kernel#abort
, кажется, что вызов Kernel.abort
внутри определения метода относится к оригиналу Kernel#abort
(расширен как Kernel.abort
).
Как Ruby знает, что когда я пишу Kernel.abort
, я имею в виду исходный метод abort
, а не тот, который я только что создал? Как бы я рекурсивно вызывать новый метод abort
, который я только что создал?