假设您有一个列表(1,“1”)它是键入列表[任何],这当然是正确的和预期的。现在,如果我像这样映射列表斯卡拉过滤器的集合类型
scala> List(1, "1") map {
| case x: Int => x
| case y: String => y.toInt
| }
生成的类型是List [Int],这也是预期的。我的问题是如果有一个相当于过滤器的映射,因为下面的例子将导致List [Any]。这可能吗?我认为这可以在编译时解决,可能不是运行时?
scala> List(1, "1") filter {
| case x: Int => true
| case _ => false
| }
这是为什么只有警卫才有可能? – 2010-02-08 21:08:06
对不起,这是一个非常愚蠢的评论。但为什么filter()不生成像partialMap一样的结果? – 2010-02-09 11:11:35
@Joa'filter'不会更改集合的类型,因为它不会修改其元素。 – 2010-02-09 15:29:25