0

関数の実行中は、次の簡単なコードを使用します。

 match{
   case Some(one)=>one.copy()
   case Type =>
   ...
   case _ =>
}

Nothing はすべての型のサブタイプであり、Nothing にはコピー機能がないため、エラーが発生します。

一致ケースフェーズを使用して、Nothing と Null Type の一致を削除する方法を知っている人はいますか?

4

1 に答える 1

1

最初に注意すべきことは、のインスタンスはNothing存在しないため、一致が の値を取得する状況になることは決してないということですNothing

とはいえ、一般的なケースでは、最も明白な方法は、最初にケースを提供することです。ケースは順番にテストおよび実行されるため、問題が発生するケースの前にそれらを追加すると、必要な動作が得られます。

??? match {
   case null => ???
   case Some(one) => one.copy()
   case Type =>
   ...
   case _ => ???
}

明らかに、型の主なポイントの 1 つは、チェックOptionの必要性を回避することです。null変数にanullが含まれる場合はOption、そうならないようにコードを変更する価値があります。

于 2014-08-06T11:53:35.450 に答える