我是Scala
的新手,但在使用OCaml
和其他一些ML系列函数式编程语言方面有一些经验。
我想知道如何定义OCaml
样式类型变体?例如,
type fruit = Apple | Orange | Strawberry
let analysis f =
match f with
| Apple -> ...
| Orange -> ...
| Strawberry -> ...
如果这个问题太天真,我很抱歉。希望有人可以帮助我。
答案 0 :(得分:1)
我不了解OCaml,但看起来你正试图做这样的事情。
sealed abstract class Fruit
class Apple extends Fruit
class Orange extends Fruit
class Strawberry extends Fruit
def mixFruit(f: Fruit) = f match {
case a: Apple => // do something with a
case o: Orange => // do something with o
case s: Strawberry => // do something with s
}