检查列表中的偶数,并在 Scala 中获取类型不匹配

Checking for evens on a list, and getting a type mismatch in Scala

我正在尝试检查列表的内容以查看某个元素是否为偶数。这是代码:

def listEvenChecker2(aList: List[Int]): Boolean = 
{
    for (elem <- aList)
    {
        if (elem % 2 == 0)
        {
           return true
        }
        else 
        {
            return false
        }
    }
}

val myList = List(1,2,3,4,5,6,7)
println(listEvenChecker2(myList))

为什么我会收到此错误:

for-comprehensions 上的 scala 文档显示了一个示例:

EXAMPLE 1

for(x <- c1; y <- c2; z <-c3) {...}

is translated into

c1.foreach(x => c2.foreach(y => c3.foreach(z =>{...})))

如您所见,您拥有的 for 表达式已转换为 aList.foreach 调用,其中 returns Unit 而不是 Boolean

如果要检查是否至少有一个偶数,请使用exists:

def listEvenChecker2(aList: List[Int]): Boolean = 
  aList.exists(_%2 == 0)

如果你想检查它们是否都是偶数,使用forall:

def listEvenChecker2(aList: List[Int]): Boolean = 
  aList.forall(_%2 == 0)