Joa*_*ert 20 types scala scala-2.8 scala-collections
假设你有一个List(1,"1")它是类型List [Any],这当然是正确的和预期的.现在,如果我像这样映射列表
scala> List(1, "1") map {
| case x: Int => x
| case y: String => y.toInt
| }
Run Code Online (Sandbox Code Playgroud)
结果类型是List [Int],也是预期的.我的问题是,是否存在等效于过滤器的映射,因为以下示例将导致List [Any].这可能吗?我假设这可以在编译时解决,可能不是运行时?
scala> List(1, "1") filter {
| case x: Int => true
| case _ => false
| }
Run Code Online (Sandbox Code Playgroud)
Dan*_*ral 24
Scala 2.9:
scala> List(1, "1") collect {
| case x: Int => x
| }
res0: List[Int] = List(1)
Run Code Online (Sandbox Code Playgroud)
对于任何绊倒这个问题的人,想知道为什么最多投票的答案对他们不起作用,请注意该partialMap
方法collect
在Scala 2.8的最终版本之前重命名.试试这个:
scala> List(1, "1") collect {
| case x: Int => x
| }
res0: List[Int] = List(1)
Run Code Online (Sandbox Code Playgroud)
(这应该是对Daniel C. Sobral的另外一个很好的答案的评论,但作为一个新用户,我不能发表评论.)
归档时间: |
|
查看次数: |
3618 次 |
最近记录: |