Rubyの基礎を固めたい Part3

こんにちは、basyouです。(@basyuokajiki)

前回からだいぶ時間が空いてしまいました。
チェリー本でRubyの基礎を学び直す企画Part3です。

今回は配列、その周りにあるメソッドについて学んでいきたいと思います。

この企画の全体を通して言えることですが、著作権の関係上、チェリー本に書いてある内容は全部書きません。(というか書けません。)
ただの写経になってしまうのももったいないですしね。

また、今までの記事ではメソッドを作成してテストの実行まで取り扱いましたが、今回からは取り扱いません。

チェリー本の良いところは

基礎理解→演習(プログラム作成)→テスト

のサイクルを提供してくれていることです。

プログラム作成フェーズとテストフェーズまで書いてしまうのはモラルがないと判断しました。(ちなみにモラルがないような人のことを僕は「小学生の時心のノート破ってそう」と表現しています。)

というわけで、今回の記事から「基礎理解」の点に絞って行こうと思います。
つまり、チェリー本の内容と比べるとこの記事なんて薄めたカルピスの水割りのようなものです。

内容が気になる方は
買おう!チェリー本!!!リンクは貼った!!!

では本題にいきます!!!

### 配列とは

配列とは、複数の要素を格納できるデータ型のことです。

book = ['CherryBook', 'JsPrimer', 'WeeklyShonenJump']

こんな感じで要素を格納できます。

book = ['CherryBook', 'JsPrimer', 'WeeklyShonenJump']
book
=> ["CherryBook", "JsPrimer", "WeeklyShonenJump"]
book.class
=> Array

bookに配列を渡してあげて、classを確認すると、配列[]はArrayクラスのオブジェクトであることが分かりますね。

bookには今回文字列の要素だけを渡しましたが、別にいろいろなデータ型を渡しても大丈夫です。

hoge = ['fuga', 1, ['dog', 'fuga']]
hoge
=> ["fuga", 1, ["dog", "fuga"]]

配列のなかに文字列や数値、配列をいれてみました。

## 配列を操作してみる

次に配列の中身を操作してみます。

### 要素を取り出す

以下のような配列があるとします。

book = ['CherryBook', 'JsPrimer', 'WeeklyShonenJump']

まずはこのbook配列の中にある「'CherryBook」を取り出してみます。

book = ['CherryBook', 'JsPrimer', 'WeeklyShonenJump']
book[0]
=> "CherryBook"
book[1]
=> "JsPrimer"
book[2]
=> "WeeklyShonenJump"

[]に数字を入れることで、その数字に対応したデータを取得できます。
ここで注意したいのが、配列内の要素のカウントは0から始まることです。

つまり、要素の1番目を取得したい場合は[0]、2番目を取得したい場合は[1]としてあげなくてはなりません。


### 要素を追加する

次に要素の追加をしてみます。

book = ['CherryBook', 'JsPrimer', 'WeeklyShonenJump']
book << 'Hunter×Hunter'
=> ["CherryBook", "JsPrimer", "WeeklyShonenJump", "Hunter×Hunter"]
book.push('北斗の拳')
=> ["CherryBook", "JsPrimer", "WeeklyShonenJump", "Hunter×Hunter", "北斗の拳"]

今回は2通りの方法で要素を追加してみました。

配列 << 追加したい要素
配列.push(追加したい要素)

どちらも配列の最後に要素を追加してくれます。
ちなみにpushメソッドでは複数の要素を追加できます。

book = []
book.push('CherryBook', 'JsPrimer', 'WeeklyShonenJump')
=> ["CherryBook", "JsPrimer", "WeeklyShonenJump"]​

さて、これまで配列の「最後」に要素を追加してきましたが、「最初」や「途中に」にも要素を追加したい時があると思います。
そのような場合は以下のメソッドを使用します。

・配列.unshift(配列の先頭に追加したい要素)
・配列.insert(追加したい位置, 追加したい要素)
book = ['CherryBook', 'JsPrimer', 'WeeklyShonenJump']
book.unshift('ぐりとぐら')
=> ["ぐりとぐら", "CherryBook", "JsPrimer", "WeeklyShonenJump"]
book.insert(2, '六法全書')
=> ["ぐりとぐら", "CherryBook", "六法全書", "JsPrimer", "WeeklyShonenJump"]

book配列の最初に「ぐりとぐら」、3番目に「六法全書」が追加されました!

先ほども書きましたが、

book.insert(2, '六法全書')

配列内の要素は0からカウントされるので、2という指定をすると3番目に要素が追加されるということに注意してください。


### 要素を削除する

では次に配列内の要素を削除したいと思います。

.delete(削除したい要素)
book = ['CherryBook', 'JsPrimer', 'WeeklyShonenJump']
book.delete('CherryBook')
=> "CherryBook"
book
=> ["JsPrimer", "WeeklyShonenJump"]

book配列から「CherryBook」が削除されました。
.delete()メソッドは引数に指定した要素と一致するものをすべて削除します。

color = ['red', 'red', 'red', 'red', 'blue']
irb(main):007:0> color.delete('red')
=> "red"
color
=> ["blue"]

引数に指定した(red)がcolor配列から全て削除されました。

次に要素を指定して削除したいと思います。

配列.delete_at(削除したい要素の位置)
book = ['CherryBook', 'JsPrimer', 'WeeklyShonenJump']
book.delete_at(2)
=> "WeeklyShonenJump"
book
=> ["CherryBook", "JsPrimer"]

配列要素の3番目にある「WeeklyShonenJump」が削除されました!

color = ['red', 'red', 'red', 'red', 'blue']
color.delete_at(3)
=> "red"
color
=> ["red", "red", "red", "blue"]

.delete()メソッドとは違い、指定した要素だけが削除されたのがお分かりいただけると思います!

## 今回はここまで

ブロックについてもやりたかったのですが、長くなりそうなので今回はここまでとします!

では今回はこの辺で!

この記事が気に入ったらサポートをしてみませんか?