Ruby 配列の操作

配列の操作

ドットインストールのRuby入門をみて、
Rubyの配列操作が新鮮だったので、覚える自信がないのでメモ

配列

array = [3, 4, 7]
p array[1] # => 4
array[1] = 10
p array # => [3, 10, 7]
p array[0..2] # => [3, 10, 7] 0 ~ 2 まで (*1
p array[0...2] # => [3, 10] 0 ~ 2 未満 (*1
p array[-1] # => 7 最後の要素
p array[1, 2] # => [10, 7] 1番目の要素から、2個分とってくる

配列操作

array2 = [6, 3, 8, 10]
array2[0...2] = [7, 1] # 0~2未満を書き換える
p array2 # => [7, 1, 8, 10]
array2[1, 0] = [14, 26, 22] # 一番目の要素から、0番目の要素に、追加する
p array2 # => [7, 14, 26, 22, 1, 8, 10]
array2[0, 2] = [] # 0~2個までを空にする
p array2 # => [26, 22, 1, 8, 10]

配列メソッド

p array2.size # => 5 サイズ
p array2.sort # => [1, 8, 10, 22, 26] 小さい順に出力
p array2.sort.reverse # => [26, 22, 10, 8, 1] 小さい順を逆順に出力
p array2 # => [26, 22, 1, 8, 10] 元の配列は変わっていない
p array2.push(100) # => [26, 22, 1, 8, 10, 100] 末尾に追加
array2 << 101 << 201 # 末尾に追加のショートカット
p array2 # => [26, 22, 1, 8, 10, 100, 101, 201]

配列メソッドについては、もう少し詳しく次回まとめます

配列の演算

Rubyは配列どうしの演算(演算というより集合)ができます。

arr1 = [1, 2, 4]
arr2 = [2, 4, 6]

# 共通部分(and演算)
p arr1 & arr2 # => [2, 4]
# 和集合(or演算)
p arr1 | arr2 # => [1, 2, 4, 6]
# 差
p arr1 - arr2 # => [1]
# 和
p arr1 + arr2 # => [1, 2, 4, 2, 4, 6]

配列を変数に分割

関数の戻り値で配列を返す時などに便利です。phpでのlist関数みたいな感じです。

def data_back
    return data = [ "apple", 100 ]
end
name, price = data_back
p name # => "apple"
p price # => 100

*1)『..』と『…』は『範囲オブジェクト』というオブジェクトを作る記号です
こんな使い方もできます。日本語はヤバイです。

# to_a : 配列に変換する
arrTemp = (1..10).to_a
p arrTemp # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arrTemp = ("a".."g").to_a
p arrTemp # => ["a", "b", "c", "d", "e", "f", "g"]
arrTemp = ("え".."く").to_a
p arrTemp # => ["え", "ぉ", "お", "か", "が", "き", "ぎ", "く"]

Rubyで二Ruby入門 (全23回) – プログラミングならドットインストール