Можно ли использовать структуру диапазона в качестве пользовательского ввода в Swift? - PullRequest
0 голосов
/ 13 июня 2019

Я хочу написать программу на Swift для macOS (консольное приложение), которая будет принимать два интервала от пользователя и выводить основные операции над ними, такие как объединение, пересечение и разность, которые различают закрытый и открытый интервал.

Моя проблема в том, что я понятия не имею, как создать readLine с диапазонами, и из-за новой версии Swift 5 мало информации о структуре Range.

Должен ли я использовать диапазоны или другую структуру / тип?

Например: Вход: [-10,3) (2,+∞)

Выход: Union: [-10,3) U (2,+∞) = [-10, +∞) Intersection: [-10,3) ∩ (2,+∞) = [2,3) Difference: [-10,3) \ (2,+∞) = [-10, 2)

1 Ответ

0 голосов
/ 13 июня 2019

Моя проблема в том, что я понятия не имею, как создать readLine с диапазонами

Нет никакого волшебного встроенного способа.

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

Лучшим решением может быть создание пользовательского интерфейса, который позволяет пользователю визуально создавать вид объекта, который вы запрашиваете.Например, у вас может быть выбор типа интервала и поле для нижней границы и поле для верхней границы.Такие вещи, как бесконечность, также будут вводиться визуально, а не заставлять пользователя учиться печатать символ бесконечности.То же самое можно сказать и о выборе операции для применения к нескольким диапазонам, например пересечению.

За кулисами, с другой стороны, математика будет довольно тривиальной, поскольку Swift Ranges дает вам практически все, что вам нужно, прямокоробки.

...