我在Scala函数中遇到了类型不匹配的问题。编译器返回错误:
def isLarger(inputNum: Int) = { var res = null if (inputNum.>(10)) { res = "aaa" } res }
如果inputNum大于10,则返回字符串“aaa”,否则返回NULL。但类型匹配。为什么?你知道问题出在哪里吗?
pieyvz9o1#
尝试添加类型声明
var res: String = null
顺便说一句,你不需要var。If-Else是一个表达式
var
def isLarger(inputNum: Int) = { val res: String = if (inputNum > 10) "aaa" else null res }
缺少值的概念用Option比用null更好地表达
Option
null
def isLarger(inputNum: Int) = if (inputNum > 10) Some("aaa") else None
这可以用Option.when来缩短(@LuisMiguelMejíasuárez提供)
Option.when
def isLarger(inputNum: Int) = Option.when(inputNum > 10)("aaa")
1条答案
按热度按时间pieyvz9o1#
尝试添加类型声明
顺便说一句,你不需要
var
。If-Else是一个表达式缺少值的概念用
Option
比用null
更好地表达这可以用
Option.when
来缩短(@LuisMiguelMejíasuárez提供)