-2

编写一个 Rails 应用程序我有一个 if 语句,它首先检查 3 个变量是否不为零,如果有任何变量为 nil,则应终止。

问题是variable_name.nil?语法只检查变量是否为 nil。我如何检查变量是否不为零?本质上,如果变量不为零,我希望它返回“真”。

def my_status (product)
  product_sales = product.line_items.total_product_sale.sum("quantity")

  if (product.volume.nil? && product.volume2.nil? && product.volume.nil?)
    if (product_sales >= product.volume) && (product_sales < product.volume2)
      level1_status = 'Flipped'
    elsif (product_sales >= product.volume2) && (product_sales < product.volume3)
      my_status = "Flipped"
    elsif (product_sales >= product.volume3)
      my_status = "Flipped"
    else   
      my_status = "In Play"
    end
  end
end
4

2 回答 2

1

如果您不必考虑三个变量中的任何一个的可能性false(而不是nil),那么:

[x, y, z].all?
于 2013-07-30T18:22:55.630 回答
0

如果它不是 nil,您可以直接对初始化变量执行if语句以返回 true(请注意,这也测试真实性,仅在项目不能返回 false 时使用它):

if variable1 && variable2 && variable3
  do things 
end

等效于这个伪代码:

if variable1 is not null AND variable2 is not null AND variable3 is not null
  do things
end

尽管使用unless语法来执行您正在执行的检查,但在 Rails 中很常见,我建议您这样做:

unless variable1.nil? || variable2.nil? || variable3.nil?
  do things
end
于 2013-07-30T18:12:31.813 回答