Кристаллический эквивалент алгебраическим типам данных
Какой идиоматический способ написать эквивалент алгебраического типа данных в Crystal? Например, в Хаскеле я мог бы
data Stage = StageInitial String | StageFinished String
Итак, я хочу иметь два этапа, каждый из которых имеет строку полезной нагрузки. Позже я хочу сыграть в матче на сцене.
Как бы вы написали это в Crystal?
1 ответ
Решение
Вы можете грубо подражать
record StageInitial, data : String
record StageFinished, data : String
alias Stage = StageInitial | StageFinished
тогда образец совпадает с case
,
Однако это не совсем идиоматический способ структурировать это в Crystal, так что вы можете столкнуться с трениями позже.