我仍然是新的,并且被这种逻辑搞糊涂了。也许我需要更多的咖啡..但是这里有。
我有三个颜色,大小和材质值。我需要将它们分配给数组“选项”。
这些变量具有值或被指定为“nil”。因此,以下内容将为每个返回true或false:
color.nil?
size.nil?
material.nil?
如果颜色和尺寸为零,那么我想要分配给选项的材质值。这是直截了当的:
if color.nil? && size.nil?
options = material
end
然而,我遇到的麻烦是,如果颜色或大小不是nil,那么我想将其中一个或两个分配给options数组,而根本不使用材料变量。
最简单的方法是什么?
答案 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