配列の複数の要素を処理する
配列から取り出す.基本編.
a = [1,2,3,4,5,6,7,8,9] p a.shift #=>1 前から p a.pop #=>9 後ろから p a #=> [2, 3, 4, 5, 6, 7, 8] # 指定箇所から,指定個数取り出す a = [1,2,3,4,5,6,7,8,9] p a.slice!(3,3) p a
追加は,unshiftとpush
2つ同時に取り出す
def shift2( ar) ar.slice!(0,2) end def pop2( ar) ar.slice!(-2,2) end a = [1,2,3,4,5,6,7,8,9] i1,i2 = shift2(a) p i1,i2 #=> 1, 2 p shift2(a) #=> [3, 4] p a #=> [5, 6, 7, 8, 9] a = [1,2,3,4,5,6,7,8,9] i1,i2 = pop2(a) p i1,i2 #=> 8,9 p pop2(a) #=> [6, 7] p a #=> [1, 2, 3, 4, 5]
a = [9] に対してshift2は動作するけど,pop2はエラーが出る.
def pop2( ar) return nil,nil if ar.empty? # 空? return ar.pop(),nil if ar.size==1 # 残り1つ? ar.slice!(-2,2) end
これは無いだろう.
def pop2( ar) return ar.pop(),ar.pop() end
とか?