Хотя это не совсем эквивалентно вашему коду, обычно это делается с помощью оператора ||
.
<% optional_width ||= default_value %>
Это эквивалентно optional_width = optional_width || default_value
.Из-за оценки схемы выстрела , если optional_with
"истинно", т. Е. Определено, а не nil
, правая часть становится равной ему, а default_value
даже не вычисляется,В противном случае правая часть будет равна default_value
.По сути, это то, что вы хотите сделать.
Хорошо, я признаю, что это может не сработать для местных жителей.Конкретная ситуация, которую я могу себе представить, состоит в том, что если при первом вызове рендеринга переменная optional_width
была установлена на какое-то значение, а в последующем вызове render
она вообще не упоминается, сохраняя свое значение при первом запуске.Хотя сейчас я не могу сделать такую проверку.