無題-2

配列に関するメソッド【ruby】

Overview

 プログラミングスクールに通い学習しましたが、改めてrubyについて学習。

配列とは
複数の要素をまとめて管理できるオブジェクトです。
配列内の要素は、インデックス(添字)で取り出すことができます。
[ ]を使って配列を作成します。
> a = ['apple', 'orange', 'melon']
# 配列を作成

> a
# 配列を確認
=> ["apple", "orange", "melon"]


インデックスは、0から始まります。一番目の要素を取り出す際は[0]と指定します。

> a[0]
# 配列の1つ目を取り出す
=> "apple"

> a[2]
# 配列の3番めを取り出す
=> "melon"

ちなみに、配列はArrayクラスのオブジェクトです。

> [].class
=> Array


length / size

lengthメソッド(※エイリアスメソッドは、sizeメソッド)を使えば、配列に入っている要素数を取得できます。
※メソッド名は異なるが、機能は同じメソッド
> a = ['apple', 'orange', 'melon']

> a.length
=> 3

> a.size
=> 3


delete_at

指定した配列の要素を削除
> a=> ["apple", "orange", "melon"]
# 配列作成

> a.delete_at(1)
=> "orange"
# orangeのインデックスを指定

> a
=> ["apple", "melon"]
# orangeが削除されている


divmod

割り算の商と余りを配列で返す
division(割る)
mod(剰余、余り)
> 15.divmod(3)
# 15/3

=> [5, 0]
# [商, 余]
>  quotient, remainder = 15.divmod(4)
=> [3, 3]
# 多重代入で別々の変数に入れる

>  quotient
=> 3

> remainder
=> 3


each

配列の要素を最初から最後まで取り出し、ブロック(下画像の赤字部分)内の処理を行う。
戻り値は、もとの配列と変わらない。

画像2

> numbers = [1, 2, 3]

>numbers.each do |n|
# nは、ブロック引数といいます。
   print  n + 1
  # 配列の要素順に1を足していく
> end

234 => [1, 2, 3]
# 処理結果 => 戻り値

また、ブロックは{ }で書くこともできます。

> numbers.each { |n| print n + 1 }
234=> [1, 2, 3]
・改行を含める長いブロックは、do . . . end
・1行でコンパクトに書きたい時、 { . . . }
と使い分ける場合が多い


map / collect

eachメソッドの次に使用頻度が高いメソッドが、mapメソッド(エイリアスメソッドは、collect)です。
mapメソッドは、ブロックで評価した値を配列で返します。
> numbers = [1, 2, 3]

> numbers.map { |n| n + 1 }
=> [2, 3, 4]
# ブロック内で処理した結果を返している

> numbers.each { |n| n + 1 }
=> [1, 2, 3]
# もとの配列の値を返してる

この戻り値の結果は、変数を作成する際に重要です。例えば、eachで新しい配列を作成する際には下記のようになります。

> numbers = [1, 2, 3]

> new_number = []
# 新しい入れ物を作成

> numbers.each { |n| new_number << n * 10 }
=> [1, 2, 3]
# <<にてnew_numberに、n * 10の結果を代入

> new_number
# new_numberを確認
=> [10, 20, 30]

new_numberという入れ物を、ブロック外で作成しています。

> numbers = [1, 2, 3]

> new_number = numbers.map { |n| n + 1 }
=> [2, 3, 4]
# 戻り値をそのまま変数に代入

> new_number
=> [2, 3, 4]

ブロックで処理した結果が配列で帰ってくるので、mapでは戻り値をそのまま変数に代入することができます。


少し長くなるので、配列に関しては二回に分けては投稿します!


いいなと思ったら応援しよう!