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