2

我正在阅读这篇博文,但我无法理解部分代码。

object O {
  def maximum(x: List[Int]): Int = x match {
  case Nil => error("maximum undefined for empty list")
  case x :: y :: ys => maximum((if(x > y) x else y) :: ys)
  case x :: _ => x
 }
}

请解释代码maximum((if(x > y) x else y) :: ys)

条件如何if成为方法的一部分maximum
我知道如果条件不完全是一个参数。

4

1 回答 1

12

在 Scala 中,if是表达式,而不是语句。

在 REPL 中试试这个:

scala> val x=1; val y=0
x: Int = 1
y: Int = 0

scala> val test=if(x > y) x else y
test: Int = 1

if评估为 1 并且 1 分配给测试。在 Javaif中可以用条件运算符表示(x > y) ? x : y

现在,您有一个maximum以 aList[Int]作为参数的函数。 调用 maximum (递归地),并在与(取决于 if 计算结果)到maximum((if(x > y) x else y) :: ys)之间添加一个列表。xyys

于 2012-09-18T12:24:27.797 回答