または、具体的には:プライベートメソッドを代わりに使用することはできませんか?Thorにno_tasksメソッドがあるのはなぜですか?
6
A
答えて
5
私はThorを理解しているので、メソッドであるvisibilityのコンセプトとは異なるため、メソッドをno tasksとマークする方法があります。彼らは異なる仕事をするために差別化する必要があります。
クラスThor
に対するサブクラスの(可視性とは無関係に)すべてのメソッドは、タスクとして明示的にマークされない限り、タスクと見なされます。タスクの可視性を制御することによって、そのタスクへのアクセスを制御します。タスクを非公開にすると、サブクラスやユーザーが直接呼び出すことはできません。アクセス制御は、何かがタスクであるかどうかとは異なります。タスクではないメソッドは、Thorによって直接呼び出されることはできず、optionsを持つことはできません。
説明する例を示します。以下では、SuperClass
はbaseTask
タスクを継承し、this_is_not_a_task
はBaseClass
から継承しています。 baseTask
タスクが非公開としてマークされている場合は、SuperClass
に継承されず、this_is_not_a_task
は継承されます。
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. Thorが私のコマンドラインオプションを認識しないのはなぜですか?
- 2. notifyメソッドがsynchronizedブロック内にあるのはなぜですか?
- 3. どこでもPOSTメソッドがあるのはなぜですか?
- 4. Magentoに_constructメソッドと_constructメソッドがあるのはなぜですか?
- 5. なぜC#のHashSetにDistinct()メソッドがあるのですか
- 6. メソッドにパラメータがないのに、静的メソッドStream.empty()に仮パラメータタイプがあるのはなぜですか?
- 7. セットには別のequalsメソッドがあるのはなぜですか?
- 8. ClassInitializeメソッドを静的にする必要があるのはなぜですか?
- 9. JPA TransientアノテーションのメソッドがTargetにあるのはなぜですか?
- 10. Javaドキュメントのインタフェースページにメソッド要約があるのはなぜですか?
- 11. スタティックライブラリにinitメソッドを持つクラスがあるのはなぜですか?
- 12. なぜこのコードは ""だけ出力されますか? (CodeingameのThorチャレンジ)
- 13. LocalCertificateSelectionCallbackメソッドで 'remoteCertificate'パラメータが空であるのはなぜですか?
- 14. getSystemService(文字列)メソッドがアクティビティクラスのスタブであるのはなぜですか?
- 15. Ruby with Thorでファイルにgsubを使用した後に余分な空白行があるのはなぜですか?
- 16. Silverlightのシステムオブジェクトにメソッドがないのはなぜですか?
- 17. Promiseからのコールバックがなぜ `.then`メソッドでアンチパターンであるのですか?
- 18. RSpecでThorスクリプトをテストする良い例はどこにありますか?
- 19. CustomFieldSerializerに静的メソッドが必要なのはなぜですか?
- 20. dictにremoveメソッドがないのはなぜですか?
- 21. Stream APIにflatten()メソッドがないのはなぜですか?
- 22. メソッドに戻り値が必要なのはなぜですか?
- 23. NSSetにwriteToFileメソッドがないのはなぜですか?
- 24. Windows UniversalアプリケーションにXmlNode.SelectSingleNodeメソッドがないのはなぜですか?
- 25. Django ValuesListQuerySetにappend()メソッドがないのはなぜですか?
- 26. SerializationInfoにTryGetValueメソッドがないのはなぜですか?
- 27. C#Linq Count()メソッドにIReadOnlyCollectionがないのはなぜですか?
- 28. RxJavaに `Single#doOnTerminate`メソッドがないのはなぜですか?
- 29. なぜorg.lwjgl.opengl.GL43クラスにはglDrawElementsメソッドがありませんか?
- 30. GoLangメソッドでコンパイルエラーが発生するのはなぜですか?
私は本当にあなたの区別が好きです。「方法であるメソッドは、メソッドの可視性の概念とは異なります。 – awendt