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,

Другие вопросы по тегам