:斯卡拉travese case类的集合与继承和解决产品与考虑下面的序列化
sealed trait ProdItem {
val name: String;
val price: BigDecimal;
}
final case class Foo(override val name: String = "Apple",
override val price: BigDecimal = 0.50) extends ProdItem
final case class Bar(override val name: String = "Orange",
override val price: BigDecimal = 0.35) extends ProdItem
val products = List(Foo, Bar, Foo, Bar)
// products: List[scala.runtime.AbstractFunction2[String,scala.math.BigDecimal,Product with Serializable with ProdItem]] = List(Foo, Bar, Foo, Bar)
我可以看到列表收集与产品,然后序列化混合。所以它不是一个简单的List [ProdItem]。您如何简单地遍历产品中的元素?
val fullPrice = product.map(x => some_conversion_function(x).price).sum
换句话说,如何将Tuple变回叶案例类直接?
这是另一个例子,其中的情况下类的继承是傻瓜?
你没有你想要的东西的清单。你有一个函数列表:'List(Foo.apply,Bar.apply,Foo.apply,Bar.apply)'。相反,尝试'val products = List(Foo(),Bar(),Foo(),Bar())'。 –
我发布后,我意识到括号和构造函数的愚蠢错误。我实际上是Scala中的元组函数列表。无论如何谢谢你回答我的问题。 –