Условный оператор в Ruby
Официальное название оператора ? : это условный оператор, хотя большинство людей знают его как тернарный оператор, указывая на количество его операндов.
Есть несколько унарных операторов (unary), которые работают с одним операндом. Например - может быть унарным оператором.
Большинство операторов бинарные (binary) и работают с двумя операндами. Например * всегда требует два операнда для работы, но в большинстве случаев - также работает как бинарный.
Есть всего один тернарный оператор, который имеет 3 операнда. Он называется условный оператор, но так как есть всего один такой, большинство людей называют его тернарный оператор.
Условный оператор в Ruby
В целом это выглядит так:
CONDITION ? EVALUATE_IF_CONDITION_WAS_TRUE : EVALUATE_IF_CONDITION_WAS_FALSE
Выражение проверяет CONDITION (условие). Если оно true(истина), тогда работает код между ? и :, и возвращается результат. Если CONDITION (условие) ложно, тогда средняя часть пропускается и выполняется 3я часть, возвращая результат.
Пример с puts
В этом примере возвращаемое значение условного оператора передается в puts
filename = ARGV.shift puts filename ? filename : 'No file given'
Пример с меньшим значением
В этом примере мы проверяем, какое из двух случайных значений меньше, и возвращаем его:
examples/ruby/smaller_ternary.rb
x = rand() y = rand() puts x puts y smaller = x < y ? x : y; puts smaller

Published on 2016-03-27