Array#map {}.compact と Enumerable#select
なんかずっと混乱していた。
一文で言うと map は加工済みの結果を返せるけど、select のブロックの中身はあくまで一つ一つの要素そのものをふるいに掛けるためのものでしかなく、加工済みのデータを返すことはできない。
map の例
irb(main):001:0> (1..5).map { |e|
( e % 2 > 0 ) ? 'e' + e.to_s : nil
}.compact
=> ["e1", "e3", "e5"]
select の例
irb(main):002:0> (1..5).select { |e|
( e % 2 > 0 ) ? 'e' + e.to_s : nil
}
=> [1, 3, 5]
これは以下とまったく一緒
irb(main):003:0> (1..5).select { |e|
e % 2 > 0
}
=> [1, 3, 5]
分かってしまえば当たり前なんだけど、いざ書いてみると不慣れなときは何が起きているのかよく分からない。なんか久しぶりにこの感覚味わった。
More
Recent Posts
- » ものぐささんのためのTypeScriptを使いつつGASでも使えるライブラリ開発環境
- » quickjs.rbでRubyの環境からJavaScriptのロジック(I/Oのないコード)の動作結果を得る
- » kintoneからエクスポートしたCSVデータの変換ライブラリを作ってみた
- » MCPメモ
- » Mermaidの大きすぎる余白を調整する方法の一例
- » LLMアプリをLLMを使いながら作ってみた
- » Gemini Advancedでもうゲームが変わっていた
- » 今さらLLMのモデルの違いとプロンプトエンジニアリングについて
- » Bundler環境でIRBでもLSPでもドキュメントを利用する方法
- » Ruby 3.2と3.3のirb historyの扱いの違いと対処方法