ruby // 存在或无
ruby // present or nil
简单的例子:
val = (params[:page] ? params[:page] : nil)
只是不知道怎么命名,所以找不到更好的答案
我觉得这个例子有更简单的语法;想知道怎么写更好
你可以简单地做:
val = params[:page]
您正在使用三元运算符,这意味着
condition ? true do this : false do this
将以上应用到您的示例中:
params[:page] ? params[:page] : nil
在 Ruby 中,任何 return 值都被视为 true
,nil
或 false
除外。所以在这里如果 params[:page]
有一个值(即条件 true
)那么你正在分配 val
它的值。如果它是 nil
,则您将 val
分配为 nil
。所以最终你只是分配 val
任何值 params[:page]
有。因此 val = params[:page]
根据此逻辑,您的最新示例将简化为:
%body{data: {page: params[:page]}}
I need the attribute to be really nil; it would not be the case with
only :
%body{data: {page: params[:page]}}
如果params[:page]
没有值,默认为nil
。所以你的假设是不正确的,除非 false
.
您可以这样使用 ||
:
val = params[:page] || nil
如果 params[:page]
是 nil
或 false
,val
将是 nil
。在所有其他情况下,它将是 params[:page]
.
的值
简单的例子:
val = (params[:page] ? params[:page] : nil)
只是不知道怎么命名,所以找不到更好的答案
我觉得这个例子有更简单的语法;想知道怎么写更好
你可以简单地做:
val = params[:page]
您正在使用三元运算符,这意味着
condition ? true do this : false do this
将以上应用到您的示例中:
params[:page] ? params[:page] : nil
在 Ruby 中,任何 return 值都被视为 true
,nil
或 false
除外。所以在这里如果 params[:page]
有一个值(即条件 true
)那么你正在分配 val
它的值。如果它是 nil
,则您将 val
分配为 nil
。所以最终你只是分配 val
任何值 params[:page]
有。因此 val = params[:page]
根据此逻辑,您的最新示例将简化为:
%body{data: {page: params[:page]}}
I need the attribute to be really nil; it would not be the case with only :
%body{data: {page: params[:page]}}
如果params[:page]
没有值,默认为nil
。所以你的假设是不正确的,除非 false
.
您可以这样使用 ||
:
val = params[:page] || nil
如果 params[:page]
是 nil
或 false
,val
将是 nil
。在所有其他情况下,它将是 params[:page]
.