Jac*_*cob 3 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
我可以写以下内容吗?
raw_data.categories.each do |category|
obj.categories << category
end
Run Code Online (Sandbox Code Playgroud)
如下呢?...
obj.categories << raw_data.categories
Run Code Online (Sandbox Code Playgroud)
BM5*_*M5k 11
看看Array#<<和Array#push.
Array#<<取一个附加到给定数组的位置.例如:
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array << 'd' # => ["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)
但是,如果你传递一个数组,你会对结果感到惊讶
irb> array << ['e', 'f', 'g'] # => ["a", "b", "c", "d", ["e", "f", "g"]]
Run Code Online (Sandbox Code Playgroud)
Array#push 可以处理1个以上的对象,每个对象都附加到数组中.
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array.push 'd' # => ["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)
但是,#push使用数组调用会得到与之相同的结果#<<.
irb> array.push ['e', 'f', 'g'] # => ["a", "b", "c", "d", ["e", "f", "g"]]
Run Code Online (Sandbox Code Playgroud)
为了推送数组中的所有元素,只需*在第二个数组之前添加一个元素.
irb> array.push *['e', 'f', 'g'] # => ["a", "b", "c", "d", "e", "f", "g"]
Run Code Online (Sandbox Code Playgroud)
在相关的说明中,虽然Array#+连接数组,但它也将允许重复的值.
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array += ['d'] # => ["a", "b", "c", "d"]
irb> array += ['d'] # => ["a", "b", "c", "d", "d"]
Run Code Online (Sandbox Code Playgroud)
如果这是不希望的,|操作员将返回两个数组的并集,没有重复值.
irb> array = %w[ a b c ] # => ["a", "b", "c"]
irb> array |= ['d'] # => ["a", "b", "c", "d"]
irb> array |= ['d'] # => ["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |