我正在尝试将一些代码从Haskell翻译成scala语言。在 haskell 中,我实现了这样的枚举类型:
data Rank = Jack | Queen | King | Ace | Num Int deriving (Show, Eq)
我想使用分离案例对象在 scala 中实现它
sealed trait Rank
case object Jack extends Rank
case object Queen extends Rank
case object King extends Rank
case object Ace extends Rank
case object Num Int extends Rank
对于 Num Int 类型我收到错误的问题。我认为它应该写成一个词!任何帮助 !
在 Haskell 中,Num
是一个需要单个类型参数(如 Int
)来生成约束(如 Num Int
的类。所以在 scala 中,你应该期待这样的东西:
case class Num(value: Int) extends Rank
请注意,scala 要求你给参数起一个名字,不像 haskell
此外,您还缺少在scala代码中为Rank
定义的Show
和Eq
实例,但这似乎不是问题的一部分