模式匹配..错误说错误:(11,11)类型不匹配;发现:单位

时间:2017-03-20 16:16:57

标签: scala

使用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")

       }

1 个答案:

答案 0 :(得分:0)

交换println和右大括号,因为println会返回Unit,这就是您的match将返回的内容。 您的代码(如编写的)在match中有两个分支。一个返回String,这就是你想要的。第二个分支("所以")执行以下代码块:"执行常量so so,返回String。丢弃价值。执行println语句,返回Unit。块结束,所以返回Unit"。所以第二个块返回Unit。如果第一个块返回String而第二个块返回Unit,则编译器确定match语句返回Unit。但是您希望将match分配给String值,因此存在编译错误。

要解决此问题,请执行println右括号外的match(即match之后)