【发布时间】:2017-10-04 21:23:02
【问题描述】:
我正在尝试将 Map 的值类型从 Any 转换为 Scala 中的 String。
我有这样的代码
import scala.collection.generic.CanBuildFrom
case class Name(FristName: String,LastName: String)
object App29 extends App {
val name = Name("mark","aden")
val stringListBuilder = new CanBuildFrom[List[Any], String, List[String]] { def apply(from: List[Any]) = this.apply(); def apply() = List.newBuilder[String] }
val result = name.getClass.getDeclaredFields.map(_.getName)
.zip(name.productIterator.toList)(stringListBuilder).toMap
}
所以我使用 CanBuilderForm 基本上将返回类型从 Map[String,Any] 转换为 Map[String,String] 但我不明白为什么它会引发类型不匹配错误。
谢谢
编辑-1
我发现我可以使用 name.productIterator.map(_.toString) 将其转换为字符串,但我想知道为什么我的 CanBuildFrom 语法错误以及如何错误。
【问题讨论】:
-
您可能对这个Scala-lang blog 感兴趣。从本质上讲,Scala 将不再在其正在进行的语言设计中使用
CanBuildFrom。
标签: scala