gpt4 book ai didi

scala - 使用密封案例对象的枚举类型(从 haskell 到 scala)

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

我正在尝试将一些代码从 haskell 翻译成 scala 语言。在 haskell 中,我实现了一个这样的枚举类型:

data Rank = Jack | Queen | King | Ace | Num Int deriving (Show, Eq) 

我想在 scala 中使用 selaled case 对象来实现它

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

请注意,与 haskell 不同,scala 要求您为参数命名

此外,您还缺少在 Scala 代码中为 Rank 定义的 ShowEq 实例,但这似乎不是一个部分问题

关于scala - 使用密封案例对象的枚举类型(从 haskell 到 scala),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135806/

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