编写此逻辑比较三个变量

时间:2015-10-06 19:14:27

标签: ruby-on-rails

我仍然是新的,并且被这种逻辑搞糊涂了。也许我需要更多的咖啡..但是这里有。

我有三个颜色,大小和材质值。我需要将它们分配给数组“选项”。

这些变量具有值或被指定为“nil”。因此,以下内容将为每个返回true或false:

color.nil?
size.nil?
material.nil?

如果颜色和尺寸为零,那么我想要分配给选项的材质值。这是直截了当的:

if color.nil? && size.nil?
  options = material
end

然而,我遇到的麻烦是,如果颜色或大小不是nil,那么我想将其中一个或两个分配给options数组,而根本不使用材料变量。

最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

我不确定这是否是处理特定用例场景的最佳方式,但只是回答您的问题,您可以这样做:

if color.nil? && size.nil?
  options = material
else
  options = [color, size].reject(&:nil?)
end

答案 1 :(得分:0)

使用此代码:

[color, size, material].compact.first

你要说的是,返回第一个非空的。因此,如果color为null但size的值为4且material的值为9,则表达式将返回4.如果color和size为null,则将获得材质的任何值(如果它具有值)。如果所有值都为null,则将为null。

或其他方式:

options = color || size || material