Il metodo di inizializzazione (costruttore) è privato o pubblico in ruby?La classe di Ruby initialize (costruttore) è un metodo privato o pubblico?
11
A
risposta
16
Vediamo:
class Test
def initialize; end
end
p Test.new.private_methods.sort.include?(:initialize)
Questo stampa true
, così initialize
è un metodo privato. Questo ha senso, è chiamato solo dal metodo di classe new
se l'oggetto è stato creato. Se vogliamo, possiamo fare qualcosa di simile:
class Test
def initialize
@counter = 0
end
def reset!
initialize
end
end
uso scorretto il costruttore come questo potrebbe però portare a problemi se lo fa più di semplice inizializzazione delle variabili.
4
Il metodo initialize
in una classe diventa automaticamente Privato.
È possibile controllare utilizzando:
puts ClassName.private_methods.sort
Si può anche chiamare 'initialize' di un oggetto' obj.send (: inizializzare) '. –
@undur_gongor: Sì, funziona per qualsiasi metodo privato. –