这里有一个简单的方法,我用它来练习Scala编程,但是当传递一个空列表作为参数时,它返回false而不是true,这是不合理的
def test(elem: List[Char]): Boolean = {
if (elem.isEmpty)
true
false
};
我尝试在第4行的开头添加一个“return”,但我也知道Scala不建议这样做。另外,Intellij的想法给了我一个提示,如果我不添加return,“未使用的表达式没有副作用”。这种现象背后的原因是什么?
1条答案
按热度按时间jei2mxaa1#
在Scala中,表达式中的最后一条语句将成为返回值。你的函数包含两个语句:1.
if (list.isEmpty) true
和2.false
。由于false
是最后一个语句,因此将返回值。来自if-test的true
值将被丢弃。为了解决这个问题,你需要在if语句中添加
else
,这样if语句就成为函数中唯一的语句(也是最后一个):或者在
true
之前添加return
(但最好使用else
):