Scala函数类型不匹配,必需:空,找到:字符串

epggiuax  于 2022-11-09  发布在  Scala
关注(0)|答案(1)|浏览(161)

我在Scala函数中遇到了类型不匹配的问题。编译器返回错误:

def isLarger(inputNum: Int) = {
      var res = null
      if (inputNum.>(10)) {
          res = "aaa"
        }
      res
      }

如果inputNum大于10,则返回字符串“aaa”,否则返回NULL。但类型匹配。为什么?你知道问题出在哪里吗?

pieyvz9o

pieyvz9o1#

尝试添加类型声明

var res: String = null

顺便说一句,你不需要var。If-Else是一个表达式

def isLarger(inputNum: Int) = {
  val res: String = 
    if (inputNum > 10)
      "aaa"
    else null
  res
}

缺少值的概念用Option比用null更好地表达

def isLarger(inputNum: Int) =
  if (inputNum > 10)
    Some("aaa")
  else None

这可以用Option.when来缩短(@LuisMiguelMejíasuárez提供)

def isLarger(inputNum: Int) = 
  Option.when(inputNum > 10)("aaa")

相关问题