Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在某些条件下将值插入数组_Ruby - Fatal编程技术网

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"]