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”)中失败了。。奇怪的是,它在第二次编译后获得了成功。至少我很高兴它在语法方面和我预期的一样。