gpt4 book ai didi

scala - case y::ys 是什么意思?

转载 作者:行者123 更新时间:2023-12-05 00:18:39 27 4
gpt4 key购买 nike

我试图理解下面的代码,但被困在 case y :: ys .这是如何定义的?我没有看到 y 的任何声明, 和 ys ... 他们来自哪里?

我明白 case匹配尝试在对象上做相等,但​​ case y :: ys好像是手术。这里发生了什么?

def f(xs: List[Int], g: (Int, Int) => Boolean) = {
def h(x: Int, xs: List[Int]): List[Int] =
xs match {
case List() => List(x)
case y :: ys => if (!g(x, y)) x :: xs else y :: h(x, ys)
}
(xs :\ List[Int]())(h)
}

最佳答案

I don't see any declaration for y, and ys, so where do they come from?



你看到的是声明。

如果“匹配”(看到了吗?),案例能够根据模式将值(此处为 xs)解构为它的部分。
在这里,列表被解构为头部(命名为 y )和尾部/其余(命名为 ys )。现在可以在箭头后面的表达式中分别访问这两个部分。

关于scala - case y::ys 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37645958/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com