Scala:类型不匹配; found:需要的单位:布尔值

Int*_*nti 15 syntax scala

嗨,我只是尝试我的第一部分scala并且遇到了这个我不明白的错误.我一直在尝试解决这个问题,并且已经用尽了我的想法.救命?

scala> def calculate(count: Int) : Boolean =    
     |           if (count<0) false
<console>:8: error: type mismatch;
 found   : Unit
 required: Boolean
                 if (count<0) false
                 ^
Run Code Online (Sandbox Code Playgroud)

谢谢

dhg*_*dhg 28

你必须有一个else子句,否则类型检查器不知道返回类型是什么,而不是这种情况count<0.

def calculate(count: Int): Boolean =    
  if (count<0) false
  else true
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,您根本不需要if语句:

def calculate(count: Int) = count >= 0
Run Code Online (Sandbox Code Playgroud)

  • 确切地说,编译器_does_知道返回类型.没有`else`分支的`if`语句有结果类型`Unit`(这就是错误所说的),所以`if(count <0)false`是`if(count <0)false else()的缩写. (5认同)