タグ付けされた質問 「trait」

2
Scalaコンパイラーがシールされていないクラス/トレイトに対してパターンマッチング警告を出せないのはなぜですか?
非シールtraitまたはabstract classScalaを使用してからパターンマッチングを使用する場合、コンパイラーはこの特定のパターンマッチのコンパイル時に、このトレイト/クラスの可能な実装が何であるかを知りませんか?だから、もしそうなら、可能性のあるすべての依存関係/インポートをチェックすることによって、使用できるタイプを知っているのでtrait/ abstract classがシールされていなくても、パターンマッチの警告を出せないでしょうか? たとえば、私がに対してOption[A]パターンマッチングを行っているSome[A]が、に対してNoneは行わない場合、Optionはシールされているため、コンパイラは文句を言うでしょう。 コンパイラがそれを認識/解決できない場合、なぜ彼はそれができないのですか?そして、コンパイラーが(理論的に)それを実行できる場合、それがScalaで使用されない理由は何ですか?そのような動作をサポートする他の言語はありますか?

2
MixinとTraitの違いは何ですか?
ScalaとHackからわかることから ミックスイン: 状態を持つことができます(つまり、インスタンスプロパティ) 具体的な方法しか提供できない クラスが混合されたのと同じ順序で呼び出されるコンストラクターを持つことができます もしA混合物中BとC、A instanceof B == falseそしてA instanceof C == false 特徴: メソッドのみを提供でき、状態は提供できません コンシューマが実装する必要がある抽象メソッドを宣言できます コンストラクタを持つことはできません AトレイトBとを実装する場合C、A instanceof B == falseおよびA instanceof C == false これは正しいですか、または何か不足していますか?これらの定義は、任意のOO言語に対して正確ですか、それとも上記の言語に対してのみ正確ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.