または、具体的には:プライベートメソッドを代わりに使用することはできませんか?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. Magentoに_constructメソッドと_constructメソッドがあるのはなぜですか?
- 4. なぜC#のHashSetにDistinct()メソッドがあるのですか
- 5. セットには別のequalsメソッドがあるのはなぜですか?
- 6. ClassInitializeメソッドを静的にする必要があるのはなぜですか?
- 7. スタティックライブラリにinitメソッドを持つクラスがあるのはなぜですか?
- 8. LocalCertificateSelectionCallbackメソッドで 'remoteCertificate'パラメータが空であるのはなぜですか?
- 9. Silverlightのシステムオブジェクトにメソッドがないのはなぜですか?
- 10. Windows UniversalアプリケーションにXmlNode.SelectSingleNodeメソッドがないのはなぜですか?
- 11. Django ValuesListQuerySetにappend()メソッドがないのはなぜですか?
- 12. SerializationInfoにTryGetValueメソッドがないのはなぜですか?
- 13. CustomFieldSerializerに静的メソッドが必要なのはなぜですか?
- 14. Promiseからのコールバックがなぜ `.then`メソッドでアンチパターンであるのですか?
- 15. RSpecでThorスクリプトをテストする良い例はどこにありますか?
- 16. Javaでは、なぜassertはキーワードであり、メソッドではないのですか?
- 17. なぜ、wait、notifyおよびnotifyAllメソッドがオブジェクトクラスにあるのですか?
- 18. 私のテストで匿名メソッドが高速になるのはなぜですか?
- 19. なぜUnderscore.js chain()メソッドが怠惰ではないのですか?
- 20. .tryメソッドがプログラムを終了するのはなぜですか?
- 21. なぜpython datetimeクラスに 'fromtimestamp'メソッドがありますが、 'totimestamp'メソッドはありませんか?
- 22. GridViewに余分な行があるのはなぜですか?
- 23. イメージに余分なスペースがあるのはなぜですか?
- 24. ハッシュテーブルにcontainsメソッドが複雑になるのはなぜですか?
- 25. Marshal.WriteInt64メソッドのコードが複雑なのはなぜですか?
- 26. なぜDataBind()メソッドが必要ですか?
- 27. なぜメソッドが遅いですか?
- 28. なぜContinueWithメソッドが必要ですか?
- 29. Javaでメソッドをvolatileにするのはなぜですか?
- 30. なぜStringメソッドsubstring()がJavaのcamelCaseにないのですか?
私は本当にあなたの区別が好きです。「方法であるメソッドは、メソッドの可視性の概念とは異なります。 – awendt