配列について基本的なことは以前書きましたのでこの記事で「??」と感じた方は下記のページを一度見てみてください。
今回は配列についてもっと詳しく書いてみました。
配列をつくる
まずは基本となる空の配列(オブジェクト)を作ってみましょう。
1 2 3 4 |
ary = [] p ary ary = Array.new p ary |
[] []
これで要素数が0(ない)Arrayクラスのオブジェクト(インスタンス)を作成することができるようになりました。
Array.newについて
Arrayクラスのクラスメソッドであるnewメソッドを使うとArrayクラスのインスタンスが返ってきます。それを変数に代入することでそのオブジェクト(インスタンス)を使うことができるようになります。次にnewメソッドに引数やブロックを渡した場合についてみてみましょう。
1 2 3 4 5 6 |
ary = Array.new(3) p ary ary = Array.new(3, "a") p ary ary = Array.new(3) { |a| a + 1 } p ary |
[nil, nil, nil] ["a", "a", "a"] [1, 2, 3]
Array.newメソッドを実行する際に引数を渡すとその数だけの配列オブジェクトを作成してくれます。1行目のように第二引数に何も渡さない場合は、nilがその数だけ要素として追加され、3行目のように第二引数にオブジェクトを渡すとそのオブジェクトが要素として追加されることになります。
また、5行目のようにブロックを渡すと第一引数で指定した数だけブロックを実行しその実行した結果の値が要素として追加されていくことになります。
%w、%iでの記述にて配列をつくる
下記のように%w、%iで記述を行うと空間で文字列を区切って配列を作ってくれます。
1 2 3 4 |
ary = %w(Break through the confusion) p ary ary = %i(Break through the confusion) p ary |
["Break", "through", "the", "confusion"] [:Break, :through, :the, :confusion]
この記述方法を知っておくと「”」や「,」を書く手間も省けて便利です。%wは文字列の配列を、%iではシンボルの配列を作ってくれます。
String(文字列)オブジェクトのsplitメソッドで配列を作成
splitメソッドを使うと文字列オブジェクトから配列を作ることができます。
1 2 3 4 |
ary = "only one life to live, so choose wisely".split p ary ary = "only one life to live, so choose wisely".split(",") p ary |
["only", "one", "life", "to", "live,", "so", "choose", "wisely"] ["only one life to live", " so choose wisely"]
引数に何も指定しない場合は文字列の空白で区切られ、配列が作られますが、引数にて区切り文字を追加するとその文字で区切って配列を作ってくれます。
要素の取り出し
配列[インデックス]の形
配列[インデックス]の形で記述するとその番号の要素を取り出してくれます。
1 2 3 4 5 6 |
ary = ["a", "b", "c", "d", "e"] p ary[0] p ary[-1] p ary[2] p ary[10] p ary[-10] |
"a" "e" "c" nil nil
配列は0から始まるのでary[0]は「”a”」となります。またインデックス番号を-1とすると後ろから1番目の値を取り出してくれます。また、5、6行目のように配列の要素数よりも多いインデックスの値を指定してしまうと「nil」が返ってきます。
コメントを残す