今回のテーマ
今回はrubyプログラミングのmap関数の使い方を解説します。
map関数の使い方を覚えておくと、今までfor文などの繰り返し文を使用して、
作成した処理を簡単に記述することができます。
KindleUnlimited会員であれば、全ての本をご覧頂けます。 配列、イテレータ、ブロックを理解すれば、Rubyプログラミングの世界が変わる 第1版
map関数の使い方例1
繰り返し文を使わない例
例1::配列の各要素を2倍する
1 2 3 |
numbers = [1, 2, 3, 4, 5] doubled_numbers = numbers.map { |n| n * 2 } print doubled_numbers |
出力結果
[2, 4, 6, 8, 10]
繰り返し文を使う例
繰り返し文使うと下記のようになります。
1 2 3 4 5 6 |
numbers = [1, 2, 3, 4, 5] doubled_numbers = Array.new(0,5) for i in 0..numbers.length - 1 do doubled_numbers[i] = numbers[i] * 2 end print doubled_numbers |
出力結果
[2, 4, 6, 8, 10]
map関数ではブロック({}またはdo~end)で囲み、ブロックパラメータ(||)で引数を指定します。
ブロックパラメータの引数は何でも構いません。
ブロックパラメータの引数には、配列内の各要素が代入され、演算結果を返してくれます。
mapのように使用できる関数をイテレータといいます。
map!関数の使い方
map!関数を使用すると、配列内の要素を直接変換することができます。
1 2 3 |
numbers = [1, 2, 3, 4, 5] numbers.map! { |n| n * 2 } print numbers |
出力結果
[2, 4, 6, 8, 10]
map関数の使い方例2
例2:配列内の各文字列の長さを取得する
1 2 3 4 |
words = ["apple", "banana", "cherry", "date", "fig"] word_lengths = words.map { |word| word.length } print word_lengths |
出力結果
[5, 6, 6, 4, 3]
この例では、ブロック内のwordに各配列の要素が代入され、word.lengthとすることで、
各文字列の長さを取得できています。
map関数の使い方例3
例3: 配列の各要素の平方を求める
1 2 3 4 |
numbers = [1, 2, 3, 4, 5] squared_numbers = numbers.map { |n| n ** 2 } print squared_numbers |
出力結果
[1, 4, 9, 16, 25]
今回は書く要素の2乗をしています。このように例をたくさんみていくと理解出来てくると思います。
map関数の使い方例4
例4: 配列の各要素から特定の文字列を削除する
1 2 3 4 |
words = ["apple", "banana", "cherry", "date", "fig"] removed_a_words = words.map { |word| word.delete('a') } print removed_a_words |
出力結果
["pple", "bnn", "cherry", "dte", "fig"]
このように各要素から特定の文字列のみ削除することも可能です。
map関数の使い方5
例5:配列の各要素から1文字目の文字列のみ取得する
1 2 3 4 |
words = ["apple", "banana", "cherry", "date", "fig"] first_chars = words.map { |word| word[0] } print first_chars |
出力結果
["a", "b", "c", "d", "f"]
まとめ
今回はmap関数の使い方を学びました!
他にも色々な使い方があるので、別記事で紹介していきたいと思います。
本当に便利な関数なので、ぜひ覚えてください!