Тернарный оператор
Тернарный оператор — это удобный способ записи условных выражений в одну строку. Он позволяет сделать код более лаконичным и читаемым.
Синтаксис
condition ? expressionIfTrue : expressionIfFalse;
Пример использования
void main() {
int age = 18;
String access = age >= 18 ? 'Доступ разрешён' : 'Доступ запрещён';
print(access);
}
В этом примере проверяется значение переменной age
. Если возраст 18 лет или больше, программа выводит «Доступ разрешён», иначе — «Доступ запрещён».
Преимущества тернарного оператора
- Упрощает код
- Улучшает читаемость при простых условиях
- Позволяет сократить количество строк кода
Когда не стоит использовать
Тернарный оператор является синтаксическим сахаром для условного выражения if-else
.
Понятие синтаксический сахар чаще всего обозначает упрощённое написание кода. Не все одинаково положительно относятся к таким сокращениям.
Я в реальных проектах видел неудачные использования тернарных операторов, вложенных один в другого, на несколько строк. Это сильно ухудшает читаемость кода и усложняет его понимание.
Например, вот так:
void main() {
int score = 75;
String result = score > 90
? "Отлично"
: score > 80
? "Хорошо"
: score > 70
? "Удовлетворительно"
: score > 60
? "Плохо"
: "Очень плохо";
print("Результат: $result");
}
Хотя тернарный оператор удобен, его не рекомендуется применять в сложных условиях, где он может ухудшить читаемость кода. В таких случаях лучше использовать if-else
.
Домашнее задание
- Чётное или нечётное?
Задача: Дано целое число n
. Используйте тернарный оператор, чтобы определить, является ли оно чётным или нечётным.
Примеры:
checkEvenOdd(7) → "Нечётное"
checkEvenOdd(10) → "Чётное"
checkEvenOdd(0) → "Чётное"
- Совершеннолетие
Задача: Дано целое число age
, представляющее возраст человека. Используйте тернарный оператор, чтобы определить, является ли он совершеннолетним (18 лет и старше) или нет.
Примеры:
checkAdult(16) → "Несовершеннолетний"
checkAdult(18) → "Совершеннолетний"
checkAdult(21) → "Совершеннолетний"
- Положительное, отрицательное или ноль?
Задача: Дано целое число num
. Используйте тернарный оператор, чтобы определить, является ли оно положительным, отрицательным или нулём.
Примеры:
checkNumber(-5) → "Отрицательное"
checkNumber(10) → "Положительное"
checkNumber(0) → "Ноль"
- Минимальное из двух чисел
Задача: Даны два числа a
и b
. Используйте тернарный оператор, чтобы найти меньшее из них.
Примеры:
minValue(10, 20) → 10
minValue(5, 3) → 3
minValue(7, 7) → 7
- Определение скидки
Задача: Дано значение purchaseAmount
, представляющее сумму покупки. Используйте тернарный оператор, чтобы определить размер скидки:
- Если покупка больше 100 евро, скидка 10%.
- Если 50–100 евро, скидка 5%.
- Если меньше 50 евро, скидки нет.
Примеры:
getDiscount(120) → "Скидка: 10%"
getDiscount(75) → "Скидка: 5%"
getDiscount(30) → "Скидка: 0%"
Дополнительные ссылки
- Тернарная условная операция
- Синтаксический сахар
- Для самостоятельного изучения: синтаксическая соль, лексический мусор.