Очистка кода Ruby с помощью тернарного оператора

Итак, когда я был студентом, изучающим Ruby, одной из моих первых целей было понять синтаксис. (Да.) Как только я начал четко понимать, как писать код Ruby, одной из моих следующих больших целей было очистить код, который я писал. Это привело меня к одному из моих новых любимых инструментов: Тернарный оператор

Тернарный оператор довольно прост, но может упростить и упростить написание нескольких строк кода. Состоит из 3 основных пунктов. Условие, возвращаемое значение, если это условие истинно, и возвращаемое значение, если это не так. Для тех, кто привык использовать операторы if / else, это должно показаться довольно знакомым. Вот пример:

c = "Blue"
if c == "Blue"
   puts "I love Blue!"
else
   puts "Eh, I prefer Blue..."
end

В этом примере у нас есть три элемента. Условие: (color == «Синий») возврат при истинном условии (ставит: «Я люблю синий!») и возврат при неправильном условии. (ставит: «Эх, я предпочитаю синий…»). Вся инструкция if / else занимает 5 строк! Теперь посмотрим, как это написано с тернарным оператором:

c = "Blue"
c == "Blue" ? (puts "I love Blue!") : (puts "Eh, I prefer Blue...")

Одна строчка кода! Я люблю это! Таким образом, во вновь написанном заявлении знак вопроса оценивает все, что было написано перед ним, а затем двоеточие разделяет возвращаемое значение на истинное (слева) и возвращаемое значение на ложное (на справа). Вы можете использовать это сокращение даже при наличии нескольких условий (&&) или операторов (||) и условий сравнения (, , =) и это лишь некоторые из них. Теперь все это сказано, если в вашем операторе if / else есть несколько строк if / elsif с различными возвращаемыми значениями, чем лучше всего просто придерживаться обычного способа написания операторов if / else. Тернарные операторы отлично подходят для очистки простых условных операторов и для того, чтобы ваш код выглядел немного чище.

Надеюсь, это поможет вам на пути к более эффективному и чистому коду!

[1]: Документация Ruby ( https://docs.ruby-lang.org/en/2.4.0/syntax/control_expressions_rdoc.html)