ruby // присутствует или ноль
Простой пример:
val = (params[:page] ? params[:page] : nil)
Я просто не знаю, как назвать это, тогда не могу найти лучший ответ для этого
Я чувствую, что для этого примера существует более простой синтаксис; и хотел бы знать, как написать это лучше
2 ответа
Ты можешь использовать ||
как это:
val = params[:page] || nil
Если params[:page]
является nil
или же false
, val
будет nil
, Во всех остальных случаях это будет значение params[:page]
,
Вы можете просто сделать:
val = params[:page]
Вы используете троичный оператор, что означает
condition ? true do this : false do this
Применяя выше к вашему примеру:
params[:page] ? params[:page] : nil
В Ruby любое возвращаемое значение рассматривается как true
кроме nil
или же false
, Так вот, если params[:page]
имеет значение (то есть условие true
) тогда вы назначаете val
его ценность. Если это nil
Вы назначаете val
как nil
, Так что в конечном итоге вы просто назначаете val
какая бы ценность params[:page]
есть. следовательно val = params[:page]
Ваш последний пример по этой логике упростит до:
%body{data: {page: params[:page]}}
Мне нужно, чтобы атрибут был действительно нулевым; это было бы не так только с:
%body{data: {page: params[:page]}}
Если params[:page]
не имеет значения, это будет nil
по умолчанию. Таким образом, ваше предположение неверно, кроме случаев false
,