Quando si utilizza method_missing
in Ruby, è almost always a good idea definire anche respond_to_missing?
.Il secondo argomento di `respond_to_missing?` È utile per qualcosa?
respond_to_missing?
accetta due argomenti; il nome del metodo che stiamo verificando (symbol
) e un valore booleano che indica se dovremmo includere metodi privati nel nostro assegno (include_all
).
Ora qui è quello che mi sono confuso su: method_missing
non accetta argomenti che potrebbero indicare ad esso se deve chiamare i metodi privati o no, come respond_to_missing?
fa. Inoltre, method_missing
viene chiamato indipendentemente dal fatto che la chiamata al metodo originale fosse in un contesto pubblico o privato e indipendentemente da ciò che restituisce respond_to_missing?
per il metodo specificato nel contesto appropriato. Quindi tutte le operazioni di method_missing
sono accessibili pubblicamente.
Se questo è il caso, allora a cosa serve il secondo argomento per respond_to_missing?
(include_all
)? Se l'oggetto dato risponde a un metodo mancante non è possibile che sia influenzato dal contesto in cui è stato chiamato il metodo mancante, quindi perché persino avere questo argomento?
Hmm ... quindi stai dicendo che anche se attualmente non c'è modo di rendere privato un metodo mancante, potresti usare 'respond_to_missing? 'Per imitare parzialmente quel comportamento non pubblicizzando l'esistenza di metodi mancanti che potresti vuoi essere privato? – Ajedi32
Sì, è giusto. –