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