Menu
Coddy logo textTech

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

Часть раздела Логика и управление потоком путешествия по Ruby на Coddy — урок 40 из 56.

Тернарный оператор — это однострочное сокращение для if/else, которое возвращает значение. Синтаксис: condition ? value_if_true : value_if_false.

age = 20
status = age >= 18 ? "Eligible" : "Not Eligible"
puts status   # Eligible

Это то же самое, что написать:

status = if age >= 18
           "Eligible"
         else
           "Not Eligible"
         end

Используйте тернарный оператор, когда обе ветви возвращают короткие значения. Если любой из ветвей требуется более одного выражения, вернитесь к обычному if/else: слишком большое количество кода в тернарном операторе затрудняет чтение.

Вы можете использовать его непосредственно внутри других выражений, включая интерполяцию:

count = 1
puts "#{count} item#{count == 1 ? "" : "s"}"   # 1 item
count = 5
puts "#{count} item#{count == 1 ? "" : "s"}"   # 5 items
challenge icon

Задание

Легко

Считайте целое число n из входных данных. Используя тернарный оператор (без блоков if/else), выведите ровно:

<n> is <label>

где label это:

  • positive когда n > 0
  • negative когда n < 0
  • zero когда n == 0

Подсказка: используйте вложенный тернарный оператор, condition ? a : (other_condition ? b : c).

Для входного значения 5 вывод будет 5 is positive. Для 0 это 0 is zero.

Шпаргалка

Тернарный оператор — это однострочное сокращение для if/else: condition ? value_if_true : value_if_false

age = 20
status = age >= 18 ? "Eligible" : "Not Eligible"  # "Eligible"

Тернарные операторы могут быть вложенными и использоваться внутри интерполяции строк:

count = 5
puts "#{count} item#{count == 1 ? "" : "s"}"  # 5 items

# Вложенный тернарный оператор
n = 3
label = n > 0 ? "positive" : (n < 0 ? "negative" : "zero")

Используйте тернарный оператор только для коротких и простых ветвлений — отдавайте предпочтение if/else, когда ветви требуют нескольких выражений.

Попробуйте сами

n = gets.to_i

# TODO: используйте тернарное выражение для создания метки, затем puts
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком