dire che ho i seguenti 2 classi:Rilevare che un metodo non è stato ignorato
class A
def a_method
end
end
class B < A
end
è possibile rilevare dall'interno (un'istanza) classe B che metodo a_method
è solo definita nel superclasse, quindi non viene sovrascritta in B?
Aggiornamento: la soluzione
Mentre ho segnato la risposta di Chuck come "accettato", poi Paolo Perrota mi ha fatto capire che la soluzione apparentemente può essere più semplice, e sarà probabilmente funzionerà con le versioni precedenti di Ruby, anche.
Rilevare se "a_method" viene sovrascritto in B:
B.instance_methods(false).include?("a_method")
E per i metodi della classe usiamo singleton_methods
simile:
B.singleton_methods(false).include?("a_class_method")
Molto bello, grazie! Soprattutto felice dopo aver visto la versione di Ruby che hai menzionato in precedenza andare giù da 1,9 a 1,8,7 (che sto effettivamente usando). – mxgrn
Sì, ero un po 'confuso su quello. All'inizio ho pensato che funzionasse con 1.8.7, poi ho visto che il 'Method # owner' non era presente nei documenti di 1.8.7 ri, quindi l'ho cambiato in 1.9, quindi ho effettivamente controllato se il metodo esisteva in 1.8.7 e visto che ho avuto ragione la prima volta. Lieto che aiuti. – Chuck