私自身のコードと多数のメーリング リストへの投稿で、Nothing が他の 2 つの型の最小上限として推論されているために混乱していることに気付きました。
答えはあなたには明白かもしれませんが*、私は怠け者なので、あなたに尋ねます*:
このように何も推論しないことが最も望ましい結果となるのは、どのような条件の下ですか?
これらの場合にコンパイラにエラーをスローさせたり、何らかの注釈によってオーバーライドされない限り警告をスローさせたりすることは理にかなっていますか?
* 複数
私自身のコードと多数のメーリング リストへの投稿で、Nothing が他の 2 つの型の最小上限として推論されているために混乱していることに気付きました。
答えはあなたには明白かもしれませんが*、私は怠け者なので、あなたに尋ねます*:
このように何も推論しないことが最も望ましい結果となるのは、どのような条件の下ですか?
これらの場合にコンパイラにエラーをスローさせたり、何らかの注釈によってオーバーライドされない限り警告をスローさせたりすることは理にかなっていますか?
* 複数
Nothing はすべてのサブタイプではないため、ある意味では、すべてのスーパータイプである Any の対応する部分です。インスタンス化することはできません。Nothing オブジェクトを保持することはできません。Nothing が実際に役立つ状況が 2 つあります (私は認識しています)。
object Nil extends List[Nothing]
それを使用して任意の List を開始できます。2 番目の質問に対して: はい、それは役に立ちます。これらの警告をオンにするためのコンパイラ スイッチが既にあると思いますが、よくわかりません。
Nothing
2 つの型が両方とも でない限り、2 つの型の最小上限として推論することは不可能Nothing
です。2 つの型の最小上限を推測し、それらの 2 つの型に共通点がない場合は、次のようになりますAny
(ほとんどの場合、またはのような値型が含まれている場合にAnyRef
のみ取得するため、取得できます)。.)Any
Int
Long