加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 实现模式匹配的类

发布时间:2020-12-16 18:42:05 所属栏目:安全 来源:网络整理
导读:例如, val list = List(1,2,3)list match { case a :: b = case _ = } 你可以使用?或者ParseResult的tokens使用?来匹配List的头部和尾部.我该怎么做才能创建可以像之前的类一样匹配的类? UPD: 并有可能写: case class @ ...List(1,3,4) match { case 1 @
例如,

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

你可以使用?或者ParseResult的tokens使用?来匹配List的头部和尾部.我该怎么做才能创建可以像之前的类一样匹配的类?

UPD:

并有可能写:

case class @ ...
List(1,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,3) match {
     |   case evens ** odds => println("Evens: "+evens+"nOdds: "+odds)
     | }
Evens: List(2)
Odds: List(1,3)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读