Oppure, per essere più specifici: non posso invece usare solo metodi privati?Perché Thor dispone del metodo no_tasks?
risposta
Come ho capito, Thor presenta i metodi per contrassegnare i metodi come no tasks perché il concetto di un metodo è un'attività diversa dal concetto di metodo visibility. Devono essere differenziati perché fanno diversi lavori.
Ogni metodo (indipendentemente dalla sua visibilità) di una sottoclasse alla classe Thor
viene considerato un'attività a meno che non venga contrassegnato esplicitamente come nessuna attività. Controllando la visibilità di un'attività si controlla l'accesso a tale attività, ad es. se rendi un compito privato, non può essere chiamato da sottoclassi o direttamente da un utente. Il controllo dell'accesso è diverso dal fatto che qualcosa sia o meno un'attività. I metodi che non sono attività non possono essere chiamati direttamente da Thor e non possono avere options.
Ecco un esempio da illustrare. Nel seguente numero SuperClass
eredita l'attività baseTask
e il metodo this_is_not_a_task
da BaseClass
. Notare che se l'attività baseTask
è contrassegnata come privata, non verrà ereditata da SuperClass
ma l'this_is_not_a_task
verrà comunque ereditata.
require 'thor'
class BaseClass < Thor
method_options :force => :boolean, :alias => :string
desc 'baseTask', 'Base task'
def baseTask
puts this_is_not_a_task("base")
end
no_tasks do
def this_is_not_a_task(s)
s.upcase
end
end
# private :baseTask
end
class SuperClass < BaseClass
desc 'superTask', 'Super task'
def superTask
puts this_is_not_a_task("super")
end
end
SuperClass.start(ARGV)
- 1. Come rendere Thor trovare i modelli per i file installati .thor del sistema?
- 2. Prompt interattivo con thor
- 3. Boson vs Thor per applicazioni console
- 4. Ruby - Thor esegue prima una specifica attività
- 5. Thor e YAML escono come binari?
- 6. Xcode dispone di funzionalità di navigazione del codice?
- 7. Perché ARC mantiene gli argomenti del metodo?
- 8. Perché "evitare il sovraccarico del metodo"?
- 9. IE8 out-of-the-box dispone del supporto per 'localStorage'
- 10. Pycharm dispone di uno strumento per il rilevamento del tempo
- 11. Perché il tipo di ritorno del metodo non è incluso nella firma del metodo?
- 12. L'istruzione "using" dispone sempre dell'oggetto?
- 13. Il dispositivo dispone di "richiamata"?
- 14. tabella non dispone di una chiave primaria
- 15. Rileva se la cuffia dispone di microfono
- 16. usare o non usare C++ 0x dispone
- 17. Pyramid dispone di un sistema Signal/Slot
- 18. Come uccidere tutti i processi all'interno del rubino Thor in stop?
- 19. Ninject equivalente del metodo Unity RegisterInstance
- 20. Perché un parametro del metodo causa NotSerializableException con Mockito?
- 21. Perché il metodo jsonify del pallone è lento?
- 22. Perché il codice del metodo Marshal.WriteInt64 è così complesso?
- 23. Perché i vararg dovrebbero essere l'ultimo nella firma del metodo?
- 24. Perché possiamo usare "questo" come parametro del metodo di istanza?
- 25. Perché l'overloading del metodo non è consentito in WCF?
- 26. Perché viene lanciata una parte della firma del metodo
- 27. Perché proguard non offusca il corpo del metodo?
- 28. Perché la spedizione del metodo a volte rallenta?
- 29. Perché Visual C++ sta cambiando il nome del mio metodo?
- 30. Perché non utilizzare l'oggetto per tutti i parametri del metodo?
Mi piace molto la distinzione che "un metodo è un'attività diversa dal concetto di visibilità di un metodo" – awendt