scala模式匹配嵌套案例

scala模式匹配嵌套案例,scala,pattern-matching,Scala,Pattern Matching,在应用了一些案例之后,我尝试匹配。嵌套案例/匹配的类型: 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) 它

在应用了一些
案例之后,我尝试
匹配
。嵌套案例/匹配的类型

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
异常

可能吗?看来我也见过类似的情况

线程“main”scala.MatchError中出现异常:x2(属于类 (java.lang.String)在 pattern\u 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


您遇到的问题是示例输入(
val x1=1
)与您给出的一个案例不匹配(因为x1不大于1)。您将需要修改现有的情况(例如,将IF更改为“<代码>如果(x>=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"
}

您遇到的问题是示例输入(
val x1=1
)与您给出的一个案例不匹配(因为x1不大于1)。您将需要修改现有的情况(例如,将IF更改为“<代码>如果(x>=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"
}

即使2(只是在试验)是的,因为现在你在第二场比赛(“x2”!=“x1”)中失败了。。奇怪的是,它在第二次编译后获得了成功。至少我很高兴它在语法方面像我预期的那样工作。即使2(只是在试验)是的,因为现在你在第二个匹配(“x2”!=“x1”)中失败了。。奇怪的是,它在第二次编译后获得了成功。至少我很高兴它在语法方面和我预期的一样。