Ruby 在某些条件下将值插入数组
在某些情况下,如何向内联数组添加值 这个例子:Ruby 在某些条件下将值插入数组,ruby,Ruby,在某些情况下,如何向内联数组添加值 这个例子: ["aaa", ("bbb" if false)] # => ["aaa", nil] 添加零,但我不想添加任何内容: ["aaa"] 我甚至会将此作为一个答案,因为这是完成这项任务最简洁、最简洁的方式 ["aaa"].tap { |arr| arr << "bbb" if false } 以更通用且易于遵循的方式: input = [42] to_add = {true: :true, false: :false} to
["aaa", ("bbb" if false)]
# => ["aaa", nil]
添加零,但我不想添加任何内容:
["aaa"]
我甚至会将此作为一个答案,因为这是完成这项任务最简洁、最简洁的方式
["aaa"].tap { |arr| arr << "bbb" if false }
以更通用且易于遵循的方式:
input = [42]
to_add = {true: :true, false: :false}
to_add.each do |needed, value|
input.tap { |arr| arr << value if needed }
end
#⇒ [42, :true]
你可以:
["aaa", ("bbb" if false)].compact
或:
但是在使用第二个选项时,要小心某些类,因为它可能会弄乱某些类的对象。例如,哈希将转换为数组:
["aaa", *({b: :b} if true)]
# => ["aaa", [:b, :b]]
当条件为false时,可以对空数组进行concat,这实际上不起任何作用:
["aaa"] + (1==1 ? ["foo"] : [])
=> ["aaa", "foo"]
["aaa"] + (1==2 ? ["foo"] : [])
=> ["aaa"]
[aaa,bbb如果为假,'ccc'如果为真].compact?@kiddorails通常会损坏允许为零的阵列[aaa].点击{啊{啊}谢谢,这就是我要找的for@AlekseiMatiushkin同意:*bbb如果为false,确切的意思是什么*,你能发送这个符号描述的链接吗?这叫做splat。你可以阅读以供参考。
["aaa"] + (1==1 ? ["foo"] : [])
=> ["aaa", "foo"]
["aaa"] + (1==2 ? ["foo"] : [])
=> ["aaa"]