LoginSignup
0
0

Ruby 配列 ブロックについて

Last updated at Posted at 2023-07-13

はじめに

  • 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ヶ月目の初学者による投稿です。
⚠️間違いがあるかもしれません。ご容赦ください。
⚠️ご指導、ご教授いただけると幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0