Scala无法映射双打列表

时间:2014-04-24 16:14:32

标签: scala functional-programming

我有一个带有属性location的case类,它是一个包含双精度的tuple2实例。

我首先使用以下内容将其转换为列表:

testPlace.location.productIterator.toList

这会生成一个两元素列表

List(78.0342, -139.2234)

在此列表中运行简单映射似乎失败,引发了以下编译错误:

loc.map((x:Double) => x + 10.0)

 type mismatch;
   found   : Double => Double
   required: Any => ?
          loc.map( (x:Double) => x + 10.0 )

有人可以解释这背后的基本原理以及我的语法有什么问题吗?试图告诉我的那种所需类型签名是什么?

2 个答案:

答案 0 :(得分:6)

Product2.productIterator会返回Iterator[Any],因此您的列表的实际类型为List[Any]。这就是您的map函数期望Any => ?

的原因

http://www.scala-lang.org/api/current/index.html#scala.Product2

答案 1 :(得分:1)

使用模式匹配(case

loc map {case (x:Double) => x + 10.0}