我不明白爲什麼在Ruby中,Array#slice
和Array#slice!
的行爲與Array#sort
和Array#sort!
的行爲不同(以一種方式返回一個新數組的結果而另一個對當前對象起作用)。爲什麼Array#slice和Array#slice!行爲有所不同?
隨着sort
第一個(沒有爆炸),返回當前數組的排序副本,並sort!
排序當前數組。
slice
,返回與指定的範圍內的陣列,和slice!
刪除從當前對象在指定的範圍。
Array#slice!
的行爲如何,而不是使當前對象成爲具有指定範圍的Array?
實施例:
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]
使用'!'在一個方法上沒有設置行爲,它只是在那裏表明該方法以某種方式改變了輸入,同時也具有完全相同的輸出。您可以將其添加到您編寫的任何方法的末尾。 – tpbowden