![](/img/trans.png)
[英]Does Scala have an efficient equivalent to F#'s Seq.tryPick function?
[英]Does Scala have an equivalent of F#'s “type of”?
F#中的類型聲明示例:
type ActiveCartData = { UnpaidItems: string list }
type PaidCartData = { PaidItems: string list; Payment: float }
type ShoppingCart =
| EmptyCart // no data
| ActiveCart of ActiveCartData
| PaidCart of PaidCartData
我們如何使用trait
和case class
和/或case object
在Scala中做類似的事情?
一個開始:
trait ShoppingCart
case object EmptyCart extends ShoppingCart
case object ActiveCart extends ShoppingCart
case object PaidCart extends ShoppingCart
但是如何與數據持有者類型建立關系呢?
如果我理解正確,您正在尋找case classes
而不是case objects
。 他們可以包裝數據:
sealed trait ShoppingCart
case object EmptyCart extends ShoppingCart
case class ActiveCart(unpaidItems: Seq[String]) extends ShoppingCart
case class PaidCart(paidItems: Seq[String], payment: Float) extends ShoppingCart
或者(如果你想保留這些持有者數據類型,除非它們非常復雜,否則我可能不會這樣做)
sealed trait ShoppingCart
case object EmptyCart extends ShoppingCart
case class ActiveCart(unpaidItems: ActiveCartData) extends ShoppingCart
case class PaidCart(paidItems: PaidCartData) extends ShoppingCart
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.