scala中模式匹配列表的语法解释

scala中模式匹配列表的语法解释,scala,pattern-matching,Scala,Pattern Matching,我在读博客文章,我无法理解部分代码 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 } } 请解释代码最大值((如果(x>y)x否则y)::

我在读博客文章,我无法理解部分代码

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
 }
}
请解释代码
最大值((如果(x>y)x否则y)::ys)

if
条件如何成为方法
最大值的一部分?

我知道if条件不完全是一个参数。

在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
如果
计算结果为1,则将1分配给测试。在Java中,
if
可以用条件运算符
(x>y)表示吗?x:y

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