Проверка множества строк в одном go в одном выражении (если) - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь проверить 10 строк, чтобы они не были пустыми, чтобы запустить мой скрипт. Как я могу разумно разбить это, чтобы остаться в пределах одной функции? Мой сценарий полагается, что все это верно, и он довольно длинный, поэтому я не могу допросить каждого из них в отдельности. Он работает с 6 именами или меньше. Но из имени 7 - 10 я получаю ошибку при создании моего приложения.

if (name[1] != "") && (name2[1] != "") && (name3[1] != "") && (name4[1] != "") && (name5[1] != "") && (name6[1] != "") && (name7[1] != "") && (name8[1] != "") && (name9[1] != "") && (name10[1] != "")

Я получаю эту ошибку:

Компилятор не может проверить это выражение в разумных пределах время; попробуйте разбить выражение на отдельные подвыражения

1 Ответ

2 голосов
/ 27 апреля 2020

Нумерация имен переменных, таких как большой красный флаг. Они должны быть в массиве.

То, что вы ищете, это Sequence.allSatisfy(_:), который возвращает true, если все члены в последовательности удовлетворяют предоставленному предикату:

let names = [name[1], name1[1], name2[1], ... name10[1]] // this is madness, get rid of these numbered variables

let allNamesArentEmpty = names.allSatisfy { !$0.isEmpty }
if allNamesArentEmpty { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...