Bonkura - Kenny

SIerで働く文系SEの記録

【たのしいRuby_13】配列クラス

たのしいRubyの第13章を学んだ。

たのしいRuby 第4版

たのしいRuby 第4版

配列の作り方

# オーソドックス
nums = [1,2,3]
# newを使う
a = Array.new
a = Array.new(5)
# 要素に空白を含まない文字列の配列を作りたい時
lang = %w(Ruby Perl Phython Scheme Pike)
# 要素に空白を含まないシンボルの配列を作りたい時
lang = %i(Ruby Perl Phython Scheme Pike)
  • to_aメソッド;オブジェクトを配列に変換
  • splitメソッド:空白やカンマで句切られた文字列から配列を作る
colum = "2013/5/30 22:33 foo.html".split()

要素の取り出し

  • a[n]:0から始める。
  • a[-n]:後ろから一つ目の要素を取り出す。
  • a[n..m]:nからmまでをあたらしい配列で返す
  • a[n...m]:nからm-1までをあたらしい配列で返す
  • a[a,len]:aからlen個の要素を取り出す

要素の置き換え

  • a[n] = item

要素の挿入

  • a[a,0]=[1,2]:aの前に挿入される。

values_atメソッド

複数のインデックスを使って飛び飛びに要素を参照し新しい配列を作るメソッド

alpha = %w(a b c d e f)
p alpha.values_at(1,3,5) #=> ["b","d","f"]

配列を集合として見たメソッド

ary1 = ["a","b","c"]
ary2 = ["b","c","d"]

p (ary1 & ary2) #共通集合
p (ary1 | ary2) #和集合

#「+」でも配列を結合出来る。

配列を集合として見たメソッド

  • 共通集合: ary1 & ary2
  • 和集合:ary1 | ary2
ary1 = ["a","b","c"]
ary2 = ["b","c","d"]

p ary1 & ary2
p ary1 | ary2

配列を列として見たメソッド

p ary1.push("d")
p ary1.pop
# pushメソッドは << で代替可能。

その他メソッド

ary1 = [1,nil,2,nil,3,4,5]
ary2 = [0,1,2,3,4,5,6]
ary3 = [1,2,3,1,2,3]

# 配列の要素からnilを取り除く
ary1.compact!
p ary1

# 配列から値を指定して要素を取り除く
ary2.delete(2)
p ary2

# 配列からインデックスを指定して要素を取り除く
ary2.delete_at(2)
p ary2

# ブロックを実行した結果が真だった場合に、要素を取り除く
ary2.delete_if { |i| i > 3 }
p ary2

# ユニーク
ary3.uniq!
p ary3

# sort
ary3.sort!