Ruby 配列、ブロックの基本

初めまして!!!!

現在Ruby歴一ヶ月の根橋京輔です。

現在写経を中心にRubyを学習中ですのでその備忘録をここに上げていきたいと思います。

よろしくお願いします。

配列の基本


複数の要素を格納できるオブジェクトのことを言う。


変数は1つのデータしか格納できませんが、配列はそれとは異なり一度に複数の要素を格納できます。

names = ['yamada', 'satou', 'tanaka']

各要素を取得する場合は,[]とインデックスを使います。インデックスは通常0からです。

names = ['yamada', 'satou', 'tanaka']

names[0] #=> 'yamada'

この時存在しないインデックスを指定するとnilが返ってきます。

配列に要素を加える方法

pushを使う

配列.push(追加する要素)

pushで加えた要素は配列の末尾に追加されます。

names = ['yamada', 'satou', 'tanaka']

names.push('nakamura')
names[3] #=> nakamura

<< も同じように配列の末尾に要素を追加します。

names = ['yamada', 'satou', 'tanaka']

names << 'nakamura'
names[3] #=> nakamura

pushや<<とは逆に先頭に要素を入れるメソッドもあります。

unshiftです。

names = ['yamada', 'satou', 'tanaka']

names.unshift('nakamura')
names[0] #=> nakamura

また、既に存在している要素を更新したい場合はインデックスを指定して値を代入

names = ['yamada', 'satou', 'tanaka']

names[0] = 'nakamura'
names[0] #=> nakamura

要素を削除する

削除するメソッドは2つあると思います。

1つはインデックスを指定するdelete_atメソッドです。

names = ['yamada', 'satou', 'tanaka']

names.delete_at(0)
names #=> ['satou', 'tanaka']

2つめは要素を引数に持たせるdeleteメソッドです。

names = ['yamada', 'satou', 'tanaka']

names.delete('yamade')
names #=> ['satou', 'tanaka']

ブロック


メソッド呼び出しの際に引数と一緒に渡すことのできる処理のかたまりのことを言います。


each

要素を1つずつ取り出して、ブロック内の処理を行います。

names = ['yamada', 'satou', 'tanaka']

names.each do |name|
"#{name}さん、こんにちは"
end

#=>yamadaさん、こんにちは
#=>satouさん、こんにちは
#=>tanakaさん、こんにちは

map

配列の各要素に処理を行い、新しい配列に加えます。

names = ['yamada', 'satou', 'tanaka']

new_names = names.map do |name|
name + 'さん'
end

new_names #=> yamadaさん, satouさん, tanakaさん

select

selectメソッドは要素ごとにブロック内の処理を行い戻り値が真の時のみ新しい配列に追加します。

num = [10,11,12,13,14,15]

three_multiple_numbers = num.select do |n|
n%3 == 0
end

three_multiple_numbers #=> 12,15

まとめ

と言うわけで、今回はrubyの配列、ブロックについて説明してみました。

もし、ここ間違っているのでは??と思う箇所がありましたらコメント欄に記載して頂けると嬉しいです。

ありがとうございました。

参考文献

この記事は以下の著書,記事を参考にさせて頂きました。