で製品を解く:Scalaは継承してケースクラスのコレクションをtraveseし、次を考えると、シリアライズ
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)
私は、リストのコレクションは、その後の製品とシリアル化と混合され見ることができます。だから単純なリスト[ProdItem]ではありません。どのようにして製品の要素を簡単にトラバースするだけですか?
val fullPrice = product.map(x => some_conversion_function(x).price).sum
つまり、タプルをリーフケースクラスに戻すにはどうすればよいでしょうか?
ケースクラスの継承が愚かな別の例ですか?
あなたが望むもののリストはありません。あなたは関数リスト 'List(Foo.apply、Bar.apply、Foo.apply、Bar.apply)'を持っています。代わりに 'val products = List(Foo()、Bar()、Foo()、Bar())'を試してください。 –
私が掲示した後、私は括弧とコンストラクタで愚かな間違いを実現しました。私は実際にScalaのタプル関数のリストです。とにかく、私の質問に答えてくれてありがとう。 –