无法理解下面的scala代码中的else if语句

时间:2019-01-23 06:31:11

标签: scala

我对Scala还是很陌生,当我在下面的链接中遇到此代码时,正在浏览文档 https://www.scala-lang.org/old/node/135.html

def filter(xs: List[Int], p: Int => Boolean): List[Int] =
    if (xs.isEmpty) xs
    else if (p(xs.head)) xs.head :: filter(xs.tail, p)
    else filter(xs.tail, p)

有人可以告诉我,如果那条线还可以做什么?

1 个答案:

答案 0 :(得分:4)

过滤器功能p的第二个参数是一个以Int作为参数并返回Boolean的函数。

因此,在else if中,它使用p调用函数xs.headxsInt的第一个元素,p。如果返回true,则会在列表的开头添加一个元素,并返回包含添加的元素的列表。

要对此进行测试-

您可以尝试val output = filter(List(1,2,3,4), (p) => p % 2 != 0); print(output) // prints `List(1, 3)` val output = filter(List(1,2,3,4), (p) => p % 2 == 0); print(output) // prints `List(2, 4)` 的两种变体,一种在数字为偶数时返回true,另一种在数字为奇数时返回true,然后查看其打印内容。

UITableViewCell1

希望这会有所帮助!