我正在尝试将一些代码从haskell转换为scala语言。 在haskell中,我实现了类似的枚举类型:
data Rank = Jack | Queen | King | Ace | Num Int deriving (Show, Eq)
我想使用selaled case Objects
在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类型我遇到错误的问题。我认为它应该写成一个字!任何帮助!
答案 0 :(得分:5)
在Haskell中Num
是一个类,它需要单个类型参数,例如Int
,以产生Num Int
之类的约束。所以在scala中你应该期待类似的东西:
case class Num(value: Int) extends Rank
请注意,与haskell
不同,scala要求您为参数指定名称此外,您错过了在scala代码中为Show
定义的Eq
和Rank
的实例,但这似乎不是问题的一部分