2012-01-06 19 views

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.

+6

Si può anche chiamare 'initialize' di un oggetto' obj.send (: inizializzare) '. –

+1

@undur_gongor: Sì, funziona per qualsiasi metodo privato. –

4

Il metodo initialize in una classe diventa automaticamente Privato.

È possibile controllare utilizzando:

puts ClassName.private_methods.sort 
Problemi correlati