水晶相当于代数数据类型

Seb*_*ian 3 crystal-lang

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

data Stage = StageInitial String | StageFinished String
Run Code Online (Sandbox Code Playgroud)

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

你怎么用水晶写这个?

RX1*_*X14 6

你可以粗略地模仿它

record StageInitial, data : String
record StageFinished, data : String
alias Stage = StageInitial | StageFinished
Run Code Online (Sandbox Code Playgroud)

然后模式匹配case.

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