Actions
Feature #5584
closedArray#sample!
Description
=begin
ランダムに選択した要素をレシーバから取り除いて返すメソッドArray#sample!の追加を提案します。
配列からランダムに要素を取り出したい場合には
a = (1..5).to_a
a.delete_at(rand(a.size)) #=> 3
p a #=> [1, 2, 4, 5]
などと書く必要がありましたが、Array#sample!があれば
a = (1..5).to_a
a.sample! #=> 4
p a #=> [1, 2, 3, 5]
と簡潔に書く事ができます。
引数を指定した場合は、その数だけレシーバから要素を取り除き、新たな配列に取り除いた要素を入れて返します。
a = (1..10).to_a
p a.sample!(5) #=> [5, 4, 2, 6, 7]
p a #=> [1, 3, 8, 9, 10]
レシーバから選択した要素を取り去ってしまう事以外は、Array#sampleと同じ動作をします。
[].sample! #=> nil
[].sample!(1) #=> []
[1,2,3].sample!(random: rand) #=> 2
patchを添付します。
=end
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0