gpt4 book ai didi

scala - 实现模式匹配的类

转载 作者:行者123 更新时间:2023-12-02 09:06:56 25 4
gpt4 key购买 nike

例如,

val list = List(1,2,3)
list match {
case a :: b =>
case _ =>
}

您可以使用 :: 匹配列表的头部和尾部,或使用 ~ 匹配 ParseResult 的标记。我应该怎么做才能创建可以像前面的类一样匹配的类?

更新:

并且可以写:

case class @ ...
List(1,2,3,4) match {
case 1 @ 2 @ 3 @ 4 =>
}

最佳答案

没有太多内容。这两个语句是等效的:

case x :: xs =>
case ::(x, xs) =>

假设您想要将列表分为奇数和偶数,并将其命名为**。您可以像这样编写提取器:

object ** {
def unapply(xs: List[Int]) = Some(xs partition (_ % 2 == 0))
}

scala> List(1,2,3) match {
| case evens ** odds => println("Evens: "+evens+"\nOdds: "+odds)
| }
Evens: List(2)
Odds: List(1, 3)

关于scala - 实现模式匹配的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2900253/

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