はじめに
- Rubyの配列やブロックの復習用
- 学習したことの備忘録
- 今回は1問1問式
学習した内容
- 配列(Arrayクラス)
- ブロック
参考にした教材
配列(Arrayクラス)について
複数のデータをまとめて格納可能なオブジェクト
a = [1, 2, 3]
puts a[0] => 1
puts a[1] => 2
puts a[2] => 3
b = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
puts b[0] => 1, 2, 3
puts b[1] => 4, 5, 6
puts b[2] => 7, 8, 9
puts b[3] => nil
変数aの配列の長さを取得したいとき
sizeメソッド
配列の長さを取得
例
a = [1, 2, 3]
puts a.size => 3
変数aの配列の1番目の要素を変更したいとき
例
a = [1, 2, 3]
a[1] = 20
puts a => 1, 20, 3
変数aの配列の最後に要素を追加したいとき
例
a = [1, 2, 3]
a << 4
puts a => 1, 2, 3, 4
変数aの配列のn番目の要素を削除したいとき
delete_atメソッド
配列のn番目を削除
例
a = [1, 2, 3]
puts a.delete_at(1) => 1, 3
わり算の商とあまりを配列で返したいとき
divmodメソッド
割った商qと余りrを、[q, r]という2要素の配列にして返す
例
q, r = 14.divmod(3)
puts q => 4
puts r => 2
ブロックについて
メソッドの引数として渡すことができる処理のかたまり
以下A,Bは同じ結果を返す
# A
numbers = [1, 2, 3, 4, 5, 6]
s = 0
numbers.each do
|n| s += n
end
puts s => 21
# B
numbers = [1, 2, 3, 4, 5, 6]
s = 0
numbers.each { |n| s += n }
puts s => 21
変数numbersの配列の2の要素を削除したいとき
deleteメソッド
指定した値に一致する要素を削除
例
numbers = [1, 2, 3, 4, 5, 6]
numbers.delete(2)
puts numbers => 1, 3, 4, 5, 6
変数numbersの配列の偶数要素をすべて削除したいとき
delete_ifメソッド
要素を順番にブロックに渡して評価し、その結果が真になった要素をすべて削除
例
numbers = [1, 2, 3, 4, 5, 6]
numbers.delete_if do |n|
n.even? # 偶数なら
end
puts numbers => 1, 3, 5
変数numbersの配列の全要素を合計したいとき
sumメソッド
要素の合計を求める
例
numbers = [1, 2, 3, 4, 5, 6]
puts numbers.sum => 21
初期値に10を与えた上で、変数numbersの配列の全要素を合計したいとき
sumメソッド
要素の合計を求める
例
numbers = [1, 2, 3, 4, 5, 6]
puts numbers.sum(10) => 31
変数numbersの配列の各要素を全て2倍にして新しい配列にしたいとき
mapメソッド
ブロックの戻り値が新しい配列の各要素になる
例
numbers = [1, 2, 3, 4, 5]
new_numbers = numbers.map { |n| numbers * 2 } # それぞれ2倍
puts new_numbers => 2, 4, 6, 8, 10
変数numbersの配列の最初の偶数要素を取り出したいとき
findメソッド
ブロックの戻り値が最初に真になった要素を返す
例
numbers = [1, 2, 3, 4, 5, 6]
even = numbers.find { |n| n.even? }
puts even => 2
変数numbersの配列の奇数要素を取り出したいとき
selectメソッド
ブロックの戻り値が真の要素のみ集める
例
numbers = [1, 2, 3, 4, 5, 6]
odd = numbers.select do |n|
n.odd?
end
puts odd => 1, 3, 5
変数numbersの配列の奇数要素を排除したいとき
rejectメソッド
ブロックの戻り値が偽の要素のみ集める
例
numbers = [1, 2, 3, 4, 5, 6]
even = numbers.reject do |n|
n.odd?
end
puts even => 2, 4, 6
まとめ
- 基礎を体系的にまとめることができたと思う
⚠️学習4ヶ月目の初学者による投稿です。
⚠️間違いがあるかもしれません。ご容赦ください。
⚠️ご指導、ご教授いただけると幸いです。