Что такое идиоматический c способ представления типов сумм в OOP, более конкретно в Dart языке?
Я создаю приложение для анкетирования на Flutter.
Скажем, у меня есть тип суммы структура данных на функциональном языке, подобном следующему:
data AnswerSpec = Boolean
| ChooseOne [Text]
| ChooseOneWithOpen [Text]
| ChooseMany [Text]
| ChooseManyWithOpen [Text]
| Open
| Duration
| SleepDuration
| Datetime -- date + time
| Count
Это определяет принятый тип вопроса / выбор ответа. С каждым вопросом связан только один из них.
В идеале, я бы также хотел связать данный ответ с той же сущностью , потому что мне нужно проверить (методы проверки сборки) что данный ответ соответствует принятому варианту ответа.
Пример
- Вопрос: Какую часть вашего тела вы тренировали сегодня?
- Принято Тип ответа:
ChooseMany ["Upper body", "Lower body"]
( пользователь может выбрать оба ) - Ответ пользователя:
["Upper body"]
Как видите, сам ответ может иметь тип int
, string
, List<string>
, DateTime
или даже их комбинацию, например List<string>
+ string
.
Можете ли вы помочь мне понять, как лучше всего смоделировать это на Dart с его абстракциями наследования, такими как class
, abstract class
и mixin
?