Каков идиоматический способ написать эквивалент алгебраического типа данных в Crystal? Например. В Haskell я мог бы

data Stage = StageInitial String | StageFinished String

Итак, я хочу иметь два этапа, каждый из которых имеет строковую полезную нагрузку. Позже я хочу сопоставить узор на сцене.

Как бы вы написали это в Crystal?

6
Sebastian 27 Фев 2018 в 03:12

1 ответ

Лучший ответ

Вы можете примерно подражать этому с помощью

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

Затем сопоставление с образцом с помощью case.

Однако это не особенно идиоматический способ структурировать это в Crystal, чтобы вы могли столкнуться с трениями позже.

8
Stephie 27 Фев 2018 в 03:32