gpt4 book ai didi

scala - Scala 是否有等价于 F#'s "类型的“?

转载 作者:行者123 更新时间:2023-12-04 19:53:55 25 4
gpt4 key购买 nike

F# 中的类型声明示例:

type ActiveCartData = { UnpaidItems: string list }
type PaidCartData = { PaidItems: string list; Payment: float }

type ShoppingCart =
| EmptyCart // no data
| ActiveCart of ActiveCartData
| PaidCart of PaidCartData

我们如何使用 traitcase class 和/或 case object 在 Scala 中做类似的事情?

开始:

trait ShoppingCart
case object EmptyCart extends ShoppingCart
case object ActiveCart extends ShoppingCart
case object PaidCart extends ShoppingCart

但是如何与数据持有者类型建立关系呢?

最佳答案

如果我没理解错的话,您正在寻找 案例类 而不是 案例对象。他们可以包装数据:

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

或者(如果你想保留这些 holder 数据类型,我可能不会这样做,除非它们非常复杂)

sealed trait ShoppingCart
case object EmptyCart extends ShoppingCart
case class ActiveCart(unpaidItems: ActiveCartData) extends ShoppingCart
case class PaidCart(paidItems: PaidCartData) extends ShoppingCart

关于scala - Scala 是否有等价于 F#'s "类型的“?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42365541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com