gpt4 book ai didi

scala - Scala模式与集合匹配

转载 作者:行者123 更新时间:2023-12-03 15:20:38 26 4
gpt4 key购买 nike

以下无效。

object Foo {
def union(s: Set[Int], t: Set[Int]): Set[Int] = t match {
case isEmpty => s
case (x:xs) => union(s + x, xs)
case _ => throw new Error("bad input")
}
}



错误:找不到:键入xs


如何在一组图案上进行匹配?

最佳答案

好吧,x:xs表示类型为xxs,因此它将不起作用。但是,a,您无法对集合进行模式化,因为集合没有定义的顺序。或者,更务实的是,因为Set上没有提取程序。

不过,您始终可以定义自己的:

object SetExtractor {
def unapplySeq[T](s: Set[T]): Option[Seq[T]] = Some(s.toSeq)
}


例如:

scala> Set(1, 2, 3) match {
| case SetExtractor(x, xs @ _*) => println(s"x: $x\nxs: $xs")
| }
x: 1
xs: ArrayBuffer(2, 3)

关于scala - Scala模式与集合匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15163904/

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