语境
我有一个这样的列表:
List[(User)]
我需要一个这样的列表:
List[(String, String)]
用户定义如下:
case class User(
id:Pk[Long] = NotAssigned,
name: String
)
事实上,初始列表是从 classes 构建的:
试过:
我的第一次“天真”尝试(来自 Java)是:
myList.map { u => u.id.get.toString, u.name }
我有一个错误:
required List[(String, String)]
given List[(java.lang.String, String)]
解决方案
正如评论中引用的帖子中提到的,Scala 有一个 String 类型,它是 java.lang.String 的扩展。使用推理时,Scala 不会转换为 Scala 超类。为了使用 Scala String 类型,您必须显式定义返回类型。
例子:
// Returns List[(java.lang.String, String)]
myList.map { u => u.id.get.toString, u.name }
// Returns List[(String, String)]
def convert(m:List[User]):List[(String, String)] = {
m.map { u => u.id.get.toString, u.name }
}