配列の複数の要素を処理する

配列から取り出す.基本編.

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

とか?