Skip to content

Тернарный оператор

Тернарный оператор — это удобный способ записи условных выражений в одну строку. Он позволяет сделать код более лаконичным и читаемым.

Синтаксис

condition ? expressionIfTrue : expressionIfFalse;

Тернарный оператор в Dart

Пример использования

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.

Домашнее задание

  1. Чётное или нечётное?

Задача: Дано целое число n. Используйте тернарный оператор, чтобы определить, является ли оно чётным или нечётным.

Примеры:

checkEvenOdd(7) → "Нечётное"
checkEvenOdd(10) → "Чётное"
checkEvenOdd(0) → "Чётное"

  1. Совершеннолетие

Задача: Дано целое число age, представляющее возраст человека. Используйте тернарный оператор, чтобы определить, является ли он совершеннолетним (18 лет и старше) или нет.

Примеры:

checkAdult(16) → "Несовершеннолетний"
checkAdult(18) → "Совершеннолетний"
checkAdult(21) → "Совершеннолетний"

  1. Положительное, отрицательное или ноль?

Задача: Дано целое число num. Используйте тернарный оператор, чтобы определить, является ли оно положительным, отрицательным или нулём.

Примеры:

checkNumber(-5) → "Отрицательное"
checkNumber(10) → "Положительное"
checkNumber(0) → "Ноль"

  1. Минимальное из двух чисел

Задача: Даны два числа a и b. Используйте тернарный оператор, чтобы найти меньшее из них.

Примеры:

minValue(10, 20) → 10
minValue(5, 3) → 3
minValue(7, 7) → 7

  1. Определение скидки

Задача: Дано значение purchaseAmount, представляющее сумму покупки. Используйте тернарный оператор, чтобы определить размер скидки:

  • Если покупка больше 100 евро, скидка 10%.
  • Если 50–100 евро, скидка 5%.
  • Если меньше 50 евро, скидки нет.

Примеры:

getDiscount(120) → "Скидка: 10%"
getDiscount(75) → "Скидка: 5%"
getDiscount(30) → "Скидка: 0%"

Дополнительные ссылки