カテゴリー
Ruby

Arrayクラスについて知ろう

この章では配列の順番を変えたりするArrayクラスのメソッドなどについて説明します。これらのメソッドはArrayクラスにあらかじめ備わっている機能です。
初めにsliceメソッドについて説明します。9 a番目の添え字の要素からbの数だけ要素を取り出した新たな配列を作ります。9 この例の場合は犬から数えて3個取り出しています。
結果は9です。
sliceのもう一つの使い方を説明します。99 この構文は引数が1つですが、aの添え字に相当する要素を取り出して、その要素を返してくれます。
結果は「犬」です。
また9と同じ意味を、atメソッドを使って作ることが出来ます。99

次はsliceの引数に範囲演算子を使った例です。99 0番目の要素から3番目の要素までを切り取って新たな配列を返してくれます。9 次は連続していない配列の要素を切り取って、新たな配列にする方法です。
sliceは連続した要素しか切り取ることが出来ませんでした。
連続していない配列の要素を切り取るには9を使います。
9この構文では添え字に相当する要素を取得できます。
では例をみてみましょう。9 このように任意の添え字を指定するとその添え字に相当するデータを配列として取得できます。
結果は9です。

次は配列同士を足したり引いたりする演算を説明します。
では例をみてみましょう。99 num1とnum2と言う2つの配列がありますが、これに対して演算を行います。9 =>配列同士を足すと2つの配列の要素を重複した要素も一緒に足し合わせて、配列を作ります。
結果は9です。9 =>配列同士を足し合わせますが重複した要素は1つの要素とする配列をつくります。
結果は9です。
9=> num1からnum2にある要素を取り除いた配列を作ります。
num2の6,7,8はnum1には存在しないので無視されます。
結果は9です。

次は配列の先頭や末尾に新たな要素を付け加えたり、取り除いたりするメソッドについて説明します。
初めにunshiftメソッドについて説明します。99 この例ではサイを配列の先頭に付け加えていますので、
結果は以下の通りです。9 次はshiftメソッドについて説明します。99 この例では先頭の要素である猫を取り除いているので結果は9です。

次はpushメソッドについて説明します。99 この例ではサイを配列の末尾に付け加えていますので、結果は9です。
次はpopメソッドについて説明します。99 この例では末尾の要素であるネズミを取り除いているので、結果は9です。

次はfirstメソッドについて説明します。99 この例では猫を返しますので、結果は「猫」です。

次はlastメソッドについて説明します。99 この例ではネズミを返しますので、結果は「ネズミ」です。
次はconcatメソッドについて説明します。99 配列animalの末尾に別の配列9を結びつけますので、結果は以下の通りです。9 次はcompactメソッドとcompact!メソッドについて説明します。
違いは「!」が付いているか、付いていないかです。9 compactメソッドはnilを取り除いた新しい配列を作ります。
compact!メソッドもnilを取り除きますが、新しい配列を作るのではなく、元の配列自体を操作します。
では例をみてみましょう。9 結果は9ですが、元の配列も変わっているのが分かります。
次の例をみてみましょう。9 新しい配列を作るので、新たな配列aを作って、それにnilを取り除いた配列を代入しています。
結果は9です。
試しに9で出力すると元の配列9が変わらずに出力されます。
次はdeleteメソッドについて説明します。
では例をみてみましょう。99 猫を削除したので、結果は9です。

次はdelete_atメソッドについて説明します。
では例をみてみましょう。99 deleteは引数に要素そのものを指定するのに対して、9は添え字を指定します。
結果は9です。

次はdelete_ifメソッドについて説明します。
では例をみてみましょう。99 delete_ifメソッドは条件に合致した要素だけを削除します。
配列のそれぞれの要素が変数にセットされ、ブロック内の条件に合致した要素だけを削除します。
この例では7を超えている要素を削除しますので、8、9が削除されます。
結果は9です。

次はreject!メソッドについて説明します。
では例をみてみましょう。99 delete_ifメソッドと同じ働きをするreject!メソッドを説明します。
reject!メソッドは条件に合致した要素だけを削除します。
条件に合致した要素を新しい配列に入れるのではなく、元の配列に対して操作を行います。
結果は9です。

次はrejectメソッドについて説明します。
では例をみてみましょう。99 rejectメソッドは条件に合致した要素だけを削除します。
条件に合致した要素を新しい配列に入れます。
reject!メソッドは元の配列に対する操作でしたね。
結果は9です。

次はuniq!メソッドとuniqメソッドについて説明します。
uniq!メソッドは配列の要素の中で同じ要素があった場合には1つにまとめます。
また、このメソッドは新しい配列を作るのではなく、元の配列に対して操作を行います。
uniqメソッドは配列の要素の中で同じ要素があった場合は1つにまとめます。
また、このメソッドは新しい配列を作ります。9 では例をみてみましょう。9 結果は4つある1が1つになったので、9です。
次の例をみてみましょう。9 このメソッドは新しい配列を作りますので、配列aという新しい配列に結果を代入してから、出力しています。

次はcollec!メソッドについて説明します。
では例をみてみましょう。99 collec!メソッドは要素の数だけブロックの中を実行し、そのブロックで処理した結果を返します。
また、このメソッドは新しい配列を作るのではなく、元の配列に対して操作を行います。
この例では配列の要素に100を足したものを元の配列に入れています。
結果は9です。
これはmap!メソッドを使って、9と書き替えても同じ意味になります。9

次はcollectメソッドについて説明します。
では例をみてみましょう。99 collectメソッドは要素の数だけブロックの中を実行し、そのブロックで処理した結果を新たな配列として作成します
結果は9です。
次はfillメソッドについて説明します。
では例をみてみましょう。99 fillメソッドは配列の要素を指定した要素で置き替えます。
このメソッドは新たな配列を作成するのではなく元の配列に対して操作を行います。
結果は9です。
fillメソッドの別の例をみてみましょう。99 添え字を指定すると添え字以降の要素が指定した要素で置き換わります。
結果は9です。
fillメソッドの別の例をみてみましょう。99 添え字と個数を指定すると添え字から指定した個数だけ、指定した要素で置き替わります。
結果は9です。
さらにfillメソッドの別の例をみてみましょう。99 範囲演算子で「ここからここまで」と指定する方法です。
この例では3から6までの添え字の範囲を猫に変えています。
結果は9です。

次はreverse!メソッドについて説明します。
では例をみてみましょう。99 reverse!メソッドは配列の順序を逆にした配列を作成します。
この動作は新たな配列に対してではなく、元の配列に対して行われます。
結果は9です。
次はreverseメソッドについて説明します。
では例をみてみましょう。99 reverseメソッドは配列の順序を逆にした配列を作成します。
この動作は元の配列に対してではなく、新たな配列に対して行われます。
結果は9です。
次はsort!メソッドについて説明します。
では例をみてみましょう。99 sort!メソッドは配列の要素を小さい順に並び変えます。
この動作は新たな配列に対してではなく、元の配列に対して行われます。
結果は9です。

次はsortメソッドについて説明します。
では例をみてみましょう。99 sortメソッドもsort!メソッドと同じ機能なので、配列の要素を小さい順に並び変えます。この動作は元の配列に対してではなく、新たな配列に対して行われます。
結果は9です。
次の例をみてみましょう。99 このsortメソッドは「ブロックでソートする機能」です(ブロックとは{ }の中です)。
この動作は元の配列に対してではなく、新たな配列に対して行われます。
この例のブロック内は9となっていますが、これは大きい順になります。
結果は9です。
次の例をみてみましょう。99 このsort!メソッドは「ブロックでソートする機能」です。
この動作は新たな配列に対してではなく、元の配列に対して行われます。9 次は配列に文字列を追加する方法について説明します。
基本構文は以下の通りです。9 これは配列に文字列を付け加えて新たな配列を作成するのではなく、元の配列自体を変更します。9 結果は9です。