2

matchいくつかcase申し込んでからやってみます。種類nested cases/matches

val x1 = 2 // or 1, 3 ...
val str = x1 match {   // scala.MatchError: 1 (of class java.lang.Integer)

  case x if(x > 1) => "x"+x match {case "x1" => "yes"}

  // updated:
  case _ => "nope"
}
println (str)

例外で失敗しscala.MatchErrorます。

出来ますか?似たようなものを見た気がします。

スレッド「メイン」 scala.MatchError: x2 (クラス java.lang.String) で pattern_matching.PatternMatchingTest$delayedInit$body.apply(PatternMatchingTest.scala:32) で scala.Function0$class.apply$mcV$sp( Function0.scala:40) で scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) で scala.App$$anonfun$main$1.apply(App.scala:71) で scala.App$$ でanonfun$main$1.apply

4

1 に答える 1

4

ヒットしている問題は、入力例 ( val x1 = 1) が指定した 1 つのケースと一致しないことです (x1 が 1 より大きくないため)。既存のケースを変更する (たとえば、 if を のようなものに変更するif(x >= 1)) か、少なくとももう 1 つのケースを追加する必要があり、おそらくデフォルトのケースを検討する必要があります。例えば。:

val str = x1 match {   // scala.MatchError: 1 (of class java.lang.Integer)
  case x if(x > 1) => "x"+x match {case "x1" => "yes"}
  case _ => "no match"
}
于 2013-09-09T23:57:51.943 に答える