我正在使用iOS应用程序,通常使用Objective C和小红宝石。所以假设我在Objective C中有以下代码:
if ([!propertyA isEqual:propertyB])
{
// Execute logic in here.
}
如果我的propertyA为nil,那么if的条件为nil,并且其中的逻辑将不会被执行。
但是我试图在ruby中检查类似的东西,这次内部的逻辑如果在我的第一个参数为零时执行。
Ruby代码:
if params[:some_param] != params[:other_param]
# Execute this logic
end
在我的参数列表中,我没有'some_param'因此,当执行上述代码时,它更像是:
if nil != params[:other_name]
如果执行该条件,则该条件为真,并且内部为逻辑。但是如果我在比较两者之前添加对params [:some_param]的检查,那么内部的逻辑if不会被执行,这就是我想要的。
所以我总是要检查参数是否存在?不应该{0}导致nil并避免在if内部执行吗?
我只是想在这里避免额外的参数检查。
答案 0 :(得分:0)
您正在使用布尔值,因此它不会评估为nil
你可以这样做
if params.fetch(:some_param, params[:other_param]) != params[:other_param]
如果以下情况,fetch返回默认值:some_param为nil,这样你就会获得相等而且会跳过逻辑,在这种情况下不确定它是否具有表现力。
这样你就可以比较苹果和苹果
一般来说,使用带有合理默认值的提取代替零检查是件好事