ruby-多个if语句(如果定义了@var)

ruby-多个if语句(如果定义了@var),ruby,Ruby,我将如何进行以下操作: 获取用户输入,可以是任意数量的“标签” 对于每个标记,评估是否定义了@tag,如果定义了@tag,则评估键和值是否相等 如果上述条件通过,则添加到数组中 示例(不正确)代码: 然后 if(@tag1&&(@tag1==@value1))&& 是真的,而且 if(@tag2&&(@tag2==@value2))&& 如果为TRUE,则元素添加两次。我只想添加一次。首先,不需要检查@tag1是否存在,因为nil==“SomeValue”是false 如果我正确理解您的问题

我将如何进行以下操作:

  • 获取用户输入,可以是任意数量的“标签”
  • 对于每个标记,评估是否定义了@tag,如果定义了@tag,则评估键和值是否相等
  • 如果上述条件通过,则添加到数组中
示例(不正确)代码:

然后
if(@tag1&&(@tag1==@value1))&&
是真的,而且
if(@tag2&&(@tag2==@value2))&&

如果为TRUE,则元素添加两次。我只想添加一次。

首先,不需要检查
@tag1
是否存在,因为
nil==“SomeValue”
false

如果我正确理解您的问题,以下是解决方案:

使用
Set
而不是
Array
集合中的项目始终是唯一的

set = Set.new
@array1.each do |element|
  if @tag1 == @value1 && @tag2 == @value2 && @tag3 == @value3 && @tag4 == @value4
    set << element
  end
end

@array2 = set.to_a
set=set.new
@阵列1.每个do |元素|
如果@tag1==@value1&&@tag2==@value2&&@tag3==@value3&&@tag4==@value4

如果您还可以添加
@array1
@tag*
@value*
的值,那么设置您想要实现的目标会更加清晰。明白,但是这些值来自API调用,我在这里无法演示。我希望有人能看出逻辑上的错误。如果helpstag和value都存储在数组中,我可以模拟一些示例值?它们是数组的一部分?如果它们不是数组的一部分,请说得更清楚,或者你的问题是你得到元素两次,你可以打电话给uniq解决你的问题我编辑了我的帖子。我希望这能让事情更清楚。
ruby script.rb --tag1 value1 --tag2 value2
set = Set.new
@array1.each do |element|
  if @tag1 == @value1 && @tag2 == @value2 && @tag3 == @value3 && @tag4 == @value4
    set << element
  end
end

@array2 = set.to_a