水晶相当于代数数据类型

在Crystal中编写等效代数数据类型的惯用方法是什么?例如 . 在Haskell我可能有

data Stage = StageInitial String | StageFinished String

所以我希望有两个阶段,每个阶段都有一个字符串有效负载 . 后来我想在舞台上进行模式匹配 .

你怎么用水晶写这个?

回答(1)

2 years ago

你可以粗略地模仿它

record StageInitial, data : String
record StageFinished, data : String
alias Stage = StageInitial | StageFinished

然后模式匹配 case .

然而,这不是一种在Crystal中构造它的特殊惯用方法,因此您可能会在以后遇到摩擦 .