Ruby: `each`よりも`map`などのコレクションを積極的に使おう(社内勉強会)

こんにちは、hachi8833です。BPS社内勉強会でのkazzさんのスライドを元にした記事をお送りいたします。 RubyのEnumerableのコレクション系メソッドのいくつかを合間合間に再実装しながら進める構成になっています。 Rubyのforは原則使わない Rubyである程度書けるようになれば、ループでforを使う人はまずいないと思います。Rubyスタイルガイド↓でも「2-07【統一】forは原則使わない」とあります。 Rubyスタイルガイドを読む: 文法(2)アンダースコア、多重代入、三項演算子、if/unless # forの場合(まず使わない) list = (1..5).to_a.freeze for element in list puts “forによる表示: #{element}” end # eachの場合 list = (1..5).to_a.freeze list.each do |element| puts “eachによる表示: #{element}” end 参考: #eachをforで実装して理解する 上のスタイルガイドにも「forの内部実装は#each」と記載されていますが、せっかくなので#eachをforで実装してみましょう。なおRubyのforはキーワードですが、#eachはメソッドです。 # オレオレeach def my_each(collection, &block) for element in collection yield(element) end collection end list = (1..5).to_a.freeze my_each(list) do |e| puts “yield経由: … Continue reading Ruby: `each`よりも`map`などのコレクションを積極的に使おう(社内勉強会)