1
私はエラーを取得しました。scala.MatchError:<SomeStringvalue>(クラスjava.lang.Stringの)
Exception in thread "main" scala.MatchError: SomeStringValue (of class java.lang.String)
私はそれが原因で「SomeStringValue」の原因となったことがわかっは、のいずれかに存在していませんでしたケース:
val test = "SomeStringValue"
test match {
case "Name" => println("Name")
case "Age" => println("Age")
case "Sex" => println("Sex")
}
私はelse caseを追加しました:_以下のように正しく実行されました。
val test = "SomeStringValue"
test match {
case "Name" => println("Name")
case "Age" => println("Age")
case "Sex" => println("Sex")
case _ => println("Nothing Matched!!")
}
質問:Scalaのcase構造に常に一致する値を設定する必要がある理由は何ですか?
nullにできませんか? –
この特殊なケースでは、 'Int'sはオブジェクトではないので、できません。しかし、より一般的には、関数型プログラミングの外でコンストラクトを使用することに同意するならば、後で未定義の 'NullPointerException'を与える' null'ではなく、特定の 'MatchError'例外を持つ方がはるかに有用ではありませんか?なぜなら、 'null'にならないもう一つの理由は、' null'は終了していない値ではなく、初期化されていない値です。 –