Очистка кода 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)