Типы сумм на дартс - PullRequest
       0

Типы сумм на дартс

0 голосов
/ 26 января 2020

Что такое идиоматический 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...