Ruby - 基本的な文法 - Array 配列

 クラウディア
1. 配列 Array
2. 初期化
3. 要素数 length, size
4. 全件アクセス for
5. 全件アクセス each
6. ソート sort sort!
7. 重複をなくす uniq uniq!
8. 先頭・末尾の要素 first, last
9. 追加 push
10. 配列の一部を取り出す

1. 配列 Array

 配列に関しては、以下に詳しく述べられています。
Ruby 2.4.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Array クラス

2. 初期化

 要素つきの初期化を行うには、まず、次の2つのいずれか。  この2つは同じ意味を持ちます。

array = [ 'foo', 'bar' ]
array = Array[ 'foo', 'bar' ]
 もうひとつのやり方が、以下になります。

array = Array.new(2, 'foo')
 これは、第1引数が要素数で、第2引数の値ですべての要素数を埋めます。  要素なしの配列を初期化するには以下のいずれかになります。

array = []
array = Array[]
array = Array.new
 のようです。

array = nil
 で初期化したら、次の追加のメソッドでこけちゃいました。  変数名では区別がつきませんがオブジェクトとして配列かどうかが明確に区別されているようです。

3. 要素数 length, size

 配列の要素数を見るには、「length」もしくは「size」を使用します。
#!/usr/bin/env ruby

array = [ 'foo', 'bar' ]

puts("#{array.length}")

array.push('baz')

puts("#{array.size}")

 これを実行すると以下のような結果となります。

> ./ソースファイル名.rb
2
3

4. for 全件アクセス

 配列へ全件アクセスするには2つの方法があるようです。  1つの方法が for。

#!/usr/bin/env ruby

array = [ 'foo', 'bar' ]

for value in array do
  puts("#{value}")
end
 これを実行すると以下のような結果となります。

> ./ソースファイル名.rb
foo
bar

5. each 全件アクセス

 配列へ全件アクセスするもう1つの方法が each。
#!/usr/bin/env ruby

array = [ 'foo', 'bar' ]

puts("その1")

array.each { | value |
  puts("#{value}")
}

puts("その2")

array.each do | value |
  puts("#{value}")
end


 変数囲む |値| の始まりから式の終わりを {} で囲む方法と do end で囲む方法がありますが、わたしは {} だと改行の位置が異なって気持ち悪い。  ruby だと意識的に考えるためにも do end の方がよいように思います。  値となる変数を囲んだ |値| の後ろの | (パイプライン)までは改行不可です。  その後の } までは1行で書いてもいいし、改行してもいいようです。  これを実行すると以下のような結果となります。

$ ./ソースファイル名.rb
foo
bar

6. ソート sort sort!

 「sort」は、配列を昇順にソートします。  ただし、結果を変えるもので、中身は変わりません。
array = [ 3, 2, 1 ]

puts("array #{array.sort}")
puts("array #{array}")

 上記を実行すると、下記の結果が得られます。
array [1, 2, 3]
array [3, 2, 1]
 ソートした結果、中身まで変更するには、「sort!」を使用します。
array = [ 3, 2, 1 ]

puts("array #{array.sort!}")
puts("array #{array}")

 上記を実行すると、下記の結果が得られます。
array [1, 2, 3]
array [1, 2, 3]

7. 重複をなくす uniq uniq!

 「uniq」は、配列内の重複データを削除します。  「sort」と同様、「uniq」は中身まで変えないので、中身まで変えるには「uniq!」を使用します。

array = [ 1, 1, 2, 2, 3, 3 ]

puts("array #{array.uniq}")
puts("array #{array}")

 上記を実行すると、下記の結果が得られます。
array [1, 2, 3]
array [1, 1, 2, 2, 3, 3]

array = [ 1, 1, 2, 2, 3, 3 ]

puts("array #{array.uniq!}")
puts("array #{array}")

 上記を実行すると、下記の結果が得られます。
array [1, 2, 3]
array [1, 2, 3]

8. 先頭・末尾の要素 first, last

 配列の先頭は、first。末尾は、last で取得します。
#!/usr/bin/env ruby

array = [ '先頭', '中間1', '中間2', '末尾' ]

puts("array.first[#{array.first}]")
puts("array.last[#{array.last}]")


 というソースを書いて実行すると下記の結果が得られます。
array.first[先頭]
array.last[末尾]

9. push 追加

 配列の要素を追加するには push を使用します。
#!/usr/bin/env ruby

array = [ 'foo', 'bar' ]

puts("push 前")

array.each do | value |
  puts("#{value}")
end

array.push('baz')

puts("push 後")

array.each do | value |
  puts("#{value}")
end

 これを実行すると下記の結果を得られます。

push 前
foo
bar
push 後
foo
bar
baz

10. 配列の一部を取り出す

 [開始..終了] という構文を使って配列の一部を取り出すことができます。
#!/usr/bin/env ruby

array1 = [ 'あ', 'い', 'う', 'え', 'お' ]

puts("#{array1}")
puts("#{array1[0..4]}")
puts("#{array1[0..-1]}")
puts("#{array1[1..-1]}")
puts("#{array1[-2..-1]}")

array2 = array1[1..-1]

puts("#{array2}")

array2[1..-1].each do | value |
  puts("#{value}")
end





 これを実行すると下記の結果を得られます。

["あ", "い", "う", "え", "お"]
["あ", "い", "う", "え", "お"]
["あ", "い", "う", "え", "お"]
["い", "う", "え", "お"]
["え", "お"]
["い", "う", "え", "お"]
う
え
お
 開始・終了には配列の添え字を使うわけですが、ユニークなのがマイナスを使用すると件数からのマイナス分ということで -1 は最後の要素の添え字になるわけです。  これがとても便利で、あらかじめの配列の数がわかっていなくても配列の最後の要素を取得することができるわけです。
ハイスピードプランU-NEXT健康サポート特集JETBOY