使用IntelliJ
。我有一个包含此代码的scala
工作表文件。我正在使用patten匹配。但是我收到了这个错误:
Error:(11, 11) type mismatch;
found : Unit
required: String
println(s"The donut $donutType taste level is $tastelevel")
^
val donutType:String = "Glazed"
val tastelevel: String = donutType match{
case "Glazed" => "Very1 tasty"
case "Plain" => "so so"
println(s"The donut $donutType taste level is $tastelevel")
}
答案 0 :(得分:0)
交换println
和右大括号,因为println
会返回Unit
,这就是您的match
将返回的内容。
您的代码(如编写的)在match
中有两个分支。一个返回String
,这就是你想要的。第二个分支("所以")执行以下代码块:"执行常量so so
,返回String
。丢弃价值。执行println
语句,返回Unit
。块结束,所以返回Unit
"。所以第二个块返回Unit
。如果第一个块返回String
而第二个块返回Unit
,则编译器确定match
语句返回Unit
。但是您希望将match
分配给String
值,因此存在编译错误。
要解决此问题,请执行println
右括号外的match
(即match
之后)