【发布时间】:2015-06-24 20:53:46
【问题描述】:
import scala.concurrent.duration._
import scala.language.implicitConversions
import scala.concurrent.{Future, Await}
import scala.concurrent.ExecutionContext.Implicits.global
object test extends App {
case class Person(name: String, age: Int)
implicit def t2p(t: (String, Int)) : Person = Person(t._1, t._2)
val f:Future[Vector[(String, Int)]] = Future {
Vector(("One", 1), ("Two", 2))
}
val s = f.mapTo[Vector[Person]]
Await.result(s.map { _ foreach { x => println(x)}}, 5.seconds)
}
我正在尝试将元组向量转换为 Vector[Person],但即使存在隐式元组到 Person 转换函数,上述代码也会导致转换异常?
线程“main”中的异常 java.lang.ClassCastException: scala.Tuple2 不能转换为 example.test$Person 在 example.test$$anonfun$2$$anonfun$apply$1.apply(test.scala:19) 在 scala.collection.Iterator$class.foreach(Iterator.scala:727) 在 scala.collection.AbstractIterator.foreach(Iterator.scala:1157) 在 scala.collection.IterableLike$class.foreach(IterableLike.scala:72) 在 scala.collection.AbstractIterable.foreach(Iterable.scala:54) 在 example.test$$anonfun$2.apply(test.scala:19) 在 example.test$$anonfun$2.apply(test.scala:19)
谢谢。
【问题讨论】: