Scala中if-else Claus的执行顺序?

kokeuurv  于 2023-06-29  发布在  Scala
关注(0)|答案(1)|浏览(149)

这里有一个简单的方法,我用它来练习Scala编程,但是当传递一个空列表作为参数时,它返回false而不是true,这是不合理的

def test(elem: List[Char]): Boolean = {
    if (elem.isEmpty)
         true
      false
  };

我尝试在第4行的开头添加一个“return”,但我也知道Scala不建议这样做。另外,Intellij的想法给了我一个提示,如果我不添加return,“未使用的表达式没有副作用”。这种现象背后的原因是什么?

jei2mxaa

jei2mxaa1#

在Scala中,表达式中的最后一条语句将成为返回值。你的函数包含两个语句:1. if (list.isEmpty) true和2. false。由于false是最后一个语句,因此将返回值。来自if-test的true值将被丢弃。
为了解决这个问题,你需要在if语句中添加else,这样if语句就成为函数中唯一的语句(也是最后一个):

def test(elem: List[Char]): Boolean = {
    if (elem.isEmpty)
        true
    else false
}

或者在true之前添加return(但最好使用else):

def test(elem: List[Char]): Boolean = {
    if (elem.isEmpty)
        return true
    false
}

相关问题