scala – 什么是模式匹配序列理解的惯用方式?
发布时间:2020-12-16 09:30:26 所属栏目:安全 来源:网络整理
导读:val x = for(i - 1 to 3) yield ix match { case 1 :: rest = ... // compile error} constructor cannot be instantiated to expected type; found : collection.immutable.::[B] required: scala.collection.immutable.IndexedSeq[Int] 这是与MatchError w
val x = for(i <- 1 to 3) yield i x match { case 1 :: rest => ... // compile error }
这是与MatchError when match receives an IndexedSeq but not a LinearSeq相同的问题。 问题是,怎么做呢?添加到.toL??ist到处都不正确。并创建一个自己的提取器,处理每个Seq(如另一个问题的答案所述)会导致一个混乱,如果每个人都会这样做… 我猜问题是,为什么我不能影响什么是返回类型的序列推理,或者:为什么这样一个广义的Seq提取器是标准库的一部分? 解决方法
那么你可以模式匹配任何序列:
case Seq(a,b,rest @ _ *) => 例如: scala> def mtch(s: Seq[Int]) = s match { | case Seq(a,rest @ _ *) => println("Found " + a + " and " + b) | case _ => println("Bah") | } mtch: (s: Seq[Int])Unit 那么这将匹配任何具有多于(或等于)2个元素的序列 scala> mtch(List(1,2,3,4)) Found 1 and 2 scala> mtch(Seq(1,3)) Found 1 and 2 scala> mtch(Vector(1,2)) Found 1 and 2 scala> mtch(Vector(1)) Bah (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- WebService<一>
- Scala – 意外类型从Map切换到Iterable进行理解?
- webservice 开发 axis2 简单部署服务
- 【数据结构】邻接表的3种常用表示方式——C++描述
- Bootstrap学习总结笔记(16)-- 基本插件之模态对话框
- bash脚本代码有助于使多个文件夹的zip / tar
- 这5篇文章将使你成为一个Angular Change Detection专家。
- twitter-bootstrap – Joomla! 3.1,删除Bootstrap
- 【数据结构】双向链表
- scala – 为什么Spark Cassandra Connector会因NoHostAvail