Тернарный условный оператор
Тернарный условный оператор (Ternary Conditional Operator) это специальный оператор с тремя частями, которые принимают форму question ? answer1 : answer2. Это упрощенный вариант для оценки одного из двух выражений, основанный на тот верно или нет выражение question . Если question верно (true), выполняется answer1 и возвращает значение; если не верно, то считается и возвращается значение answer2.
Тернарный условный оператор это упрощение для следующего кода:
1 2 3 4 5 |
if question { answer1 } else { answer2 } |
Следующий пример, который подсчитывает пиксели высоты для ячейки таблицы (table row). Высота строки должна быть выше на 50 пикселей, чем высота контента, если у ячейки есть заголовок. И на 20 пикселей выше, если у ячейки нет заголовка:
1 2 3 4 |
let contentHeight = 40 let hasHeader = true let rowHeight = contentHeight + (hasHeader ? 50 : 20) //rowHeight равно 90 |
Предшествующий пример это сокращенный вариант кода :
1 2 3 4 5 6 7 8 9 |
let contentHeight = 40 let hasHeader = true var rowHeight = contentHeight if hasHeader { rowHeight = rowHeight + 50 } else { rowHeight = rowHeight + 20 } // rowHeight is equal to 90 |
Первый пример использования тернарного условного оператора означает, что rowHeight может установлен в нужное значение в единственной строке кода. Это более кратко, чем второй пример и позволяет rowHeight быть не переменной, а константой, поскольку её значение не будет изменено внутри if.
Тернарный условный оператор предоставляет эффективный способ решения какое из двух выражений принять. Используйте тернарный оператор с осторожностью. Его сжатость может привести к трудночитаемости кода. Избегайте комбинирование нескольких экземпляров тернарного оператора в одном сравнении.