我不明白为什么在 Ruby 中, Array#slice
其行为与andArray#slice!
不同(其中一个在新数组上返回结果,而另一个在当前对象上工作)。Array#sort
Array#sort!
使用sort
第一个(没有 bang),返回当前 Array 的排序副本,并对当前 Array 进行sort!
排序。
slice
,返回一个指定范围的数组,并从当前对象中slice!
删除指定范围。
这样做的原因是什么,Array#slice!
而不是使当前对象成为具有指定范围的数组?
例子:
a = [0,1,2,3,4,5,6,7,8,9]
b = a.slice( 2,2 )
puts "slice:"
puts " a = " + a.inspect
puts " b = " + b.inspect
b = a.slice!(2,2)
puts "slice!:"
puts " a = " + a.inspect
puts " b = " + b.inspect
输出:
slice:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [2, 3]
slice!:
a = [0, 1, 4, 5, 6, 7, 8, 9]
b = [2, 3]