gpt4 book ai didi

scala.MatchError : (of class java. lang.String)

转载 作者:行者123 更新时间:2023-12-02 19:52:52 26 4
gpt4 key购买 nike

我收到错误:

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 构造中应该始终存在匹配值的原因是什么?

最佳答案

match 构造本身就是一个表达式。

假设您没有 println 语句,而是整数,那么整个 block 将是 Integer 类型的值:

val test = "SomeStringValue"
val count: Int = test match {
case "Name" => 1
case "Age" => 2
case "Sex" => 3
}

现在,count 应该是什么值?这就是为什么 match 语句必须处理所有可能的情况。

在某些情况下(例如,当针对密封特征密封抽象类进行模式匹配时),编译器将能够向您发出警告,但大多数情况下的时候,错误会在运行时抛出,所以你真的需要小心。

关于scala.MatchError : <SomeStringvalue> (of class java. lang.String),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43400055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com