【发布时间】:2014-10-15 17:42:04
【问题描述】:
鉴于Seq.view 返回一个SeqView,我本来希望Set.view 返回一个SetView,但不存在这样的视图; Set.view 而是返回 IterableView。
很遗憾,IterableView 缺少一些方法,例如 contains。比较这些,例如:
Seq(1, 2, 3).view.map(_ * 2).contains(4) // returns true
Set(1, 2, 3).view.map(_ * 2).contains(4) // error
SetView 类不存在有什么特别的原因吗?
另外,Iterable 没有 contains 方法有什么原因吗(鉴于这基本上是 find 的一种特殊情况)?
鉴于上述情况,在使用集合时是否有更好的替代方案(换句话说,Scala 的最佳实践是什么):
Set(1, 2, 3).view.map(_ * 2).find(_ == 4).isDefined
【问题讨论】:
-
不是很一般的选择,但是
Set(1, 2, 3).exists(x => x * 2 == 4)
标签: scala scala-2.10