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

匹配Scala中列表的第n个元素

发布时间:2020-12-16 09:02:24 所属栏目:安全 来源:网络整理
导读:将值与列表的第n个元素匹配的最佳 Scala习惯用法是什么? 天真的方法显然不起作用: scala val list = List(5,6,7)list: List[Int] = List(5,7)scala val x = 7x: Int = 7scala x match { case list(2) = true; case _ = false }console:10: error: value li
将值与列表的第n个元素匹配的最佳 Scala习惯用法是什么?

天真的方法显然不起作用:

scala> val list = List(5,6,7)
list: List[Int] = List(5,7)

scala> val x = 7
x: Int = 7

scala> x match { case list(2) => true; case _ => false }
<console>:10: error: value list is not a case class constructor,nor does it have an       unapply/unapplySeq method
   x match { case list(2) => true; case _ => false }

澄清一下 – 这个问题不是关于如何将值与列表的第n个元素进行比较 – 具体是关于是否可以使用匹配来完成.

解决方法

看哪,实例提取器的力量! (stdlib中的Regex类的工作方式类似)

case class Nth[A](which: Int) {
  def unapply(in: List[A]): Option[A] = if (in.size >= which+1) Some(in(which)) else None
}

val second = Nth[Int](1)

List(2,4,6) match {
  case second(4) => println("yep!")
  case x => println("nope!")
}

(编辑:李大同)

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

    推荐文章
      热点阅读