配列要素の追加方法
超基本的なrubyの配列の扱いについて
要素の変更
ruby.rb
#[]で配列をつくる
irb(main):047:0> a = [1,2,3]
=> [1, 2, 3]
#添え字を使って追加する
irb(main):048:0> a[3] = 4
=> 4
irb(main):049:0> a
=> [1, 2, 3, 4]
#<<を使うと最後の要素に追加することができる
irb(main):050:0> a << 5
=> [1, 2, 3, 4, 5]
irb(main):051:0>
#元の大きさより大きな添字を入れると、間のよそはnilになる
irb(main):051:0> a[6] = 7
=> 7
irb(main):052:0> a
=> [1, 2, 3, 4, 5, nil, 7]
#要素を入れ替える
irb(main):053:0> a[5] = 6
=> 6
irb(main):054:0> a
=> [1, 2, 3, 4, 5, 6, 7]
#要素を削除する→delete_at
irb(main):055:0> a.delete_at(0)
=> 1
irb(main):056:0> a
=> [2, 3, 4, 5, 6, 7]
配列の要素を削除する
#配列の要素を削除する
irb(main):072:0> a = [1,2,3,1,2,3]
=> [1, 2, 3, 1, 2, 3]
irb(main):073:0> a.delete(1)
=> 1
irb(main):074:0> a
=> [2, 3, 2, 3]
#delete_ifメソッド
#delete_ifメソッドは配列の要素を順番に取り出し、その要素をブロックに渡す。
#ブロックの戻り値をチェックし、その戻り値が真であればブロックに渡した要素を配列から削除し、偽であれば配列に残したままにする。
a = [1,2,3,1,2,3]
a.delete_if do |n|
n.odd?
end
puts a
=> [2, 2]
ブロックを{}で各
a = [1,2,3,4]
sum = 0
#do...endの代わりに{}を使う
number.each{|n| sum += n}
sum #=> 10
配列の要素の取得方法
配列[位置,取得する長さ]
a = [1,2,3,4,5]
a[1,3] #=>[2,3,4]
values_atメソッドを使うと取得したい要素の添字を複数指定ができる。
a = [1,2,3,4,5]
a.values_at(0,2,4) #=>[1,3,5]
[配列の長さ-1]を指定すると最後の要素を取得
a = [1,2,3,4,5]
a[a.size-1] #=>5
-1は最後の要素、-2は最後から2番めの要素というふうに指定が可能。
a = [1,2,3,4,5]
a[-1] #=>5
a[-2] #=>4
lastというメソッドを使うと最後を取得できる。
引数に0以上の数字を入れると最後のn個の要素を取得できる
a = [1,2,3,4,5]
a.last #=>5
a.last(2) #=> [4,5]
lastの反対にfirstもある。使い方は全く同じ
a = [1,2,3,4,5]
a.first #=>1
a.first(2) #=>[1,2]
要素の追加
a = []
a.push(1) #=>[1]
a.push(2,3) #=>[1,2,3]
# << でも同じ
a << 4
要素の削除
a = [1,2,3,4,5]
a.delete(2) #=> [1,3,4,5]
配列の連結
配列を連結したい場合はconcatか + を使う。
2つの違いは元の配列を変更するかどうか(破壊するかどうか)
contatを使うと元の配列(メソッドを呼び出した側の配列)が変更される。
a = [1]
b = [2,3]
a.concat(b) #=> [1,2,3]
#aは変更される(破壊的)
#bは変更されない
a #=> [1,2,3]
b #=> [2,3]
+を使うと元の配列を変更せずに、新しい配列を作成する。
a = [1]
b = [2,3]
a + b #=> [1,2,3]
#もちろんaもbも破壊されない。