ho esteso Kernel
per sé, e nella definizione del metodo di istanza Kernel#abort
, ho chiamato il metodo singleton Kernel.abort
:chiamata di un metodo singleton all'interno di un metodo di istanza in un modulo che si estende
module Kernel
extend self
def abort
puts "Press ENTER to exit..."
gets
Kernel.abort
end
end
abort
Quando chiamo Kernel#abort
, sembra che la chiamata Kernel.abort
all'interno della definizione del metodo faccia riferimento all'originale Kernel#abort
(esteso come Kernel.abort
).
Come fa Ruby a sapere che quando scrivo Kernel.abort
, intendo il metodo originale abort
, non quello che ho appena creato? Come chiamerei ricorsivamente il nuovo metodo abort
che ho appena creato?
Se si desidera la ricorsione, utilizzare 'abort' invece di' Kernel.abort'. –
'abort' è una chiamata con 'self' implicito. 'Kernel' in' Kernel.abort' è il 'self' esplicito, si specifica l'oggetto su cui il metodo deve essere richiamato. Oh, e ho riaperto la tua domanda. –
Non sono del tutto sicuro di come funzioni la risoluzione dei nomi qui, quindi non sto inviando una risposta. Questa domanda deve essere già stata fatta su questo sito, però :) –