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