NULL::something

Login via flickr, はてな, TypeKey.

2006-03-11

Ruby, collect or map

ずっと collect を使ってきたんだけど、マイノリティなのか。

今日 Symbol#to_proc 関連で map をよく見かけたから、map ってなんだっけーとか思いつつリファレンスをひいたら、あら不思議、collect のシノニムだった。IRC でそんなこと言ってたら「collect ってむしろなんだよ」的で驚いた。

map のほうが短くていいからこれからは map にしようかと思いつつ、やっぱどうも map に慣れないいやそれは当たり前だけど。

そもそもなんで collect を使い始めたんだろう。謎だ。リファレンスマニュアルで map より上にあるからだろうか。

あーそうだ。一応忘れないように印象を書いておいてみる。ちなみに俺は数学がわからんちんな坊やなので、map が写像だとかってのは微塵も知りませんでした。いやもだめすぎなんですが、その辺を考慮してください (謎)。

map ってなんか戻り値が予想できない感じがする。配列の各要素にブロックを適用する (脳内での map のイメージは適用だった)、までは名前から分かるのだけれど、そのあとどうやって返ってくるのかが直感的にわからなかった。

対して collect は、集めて配列にするみたいなことが名前からわかるので戻り値は直感的だった。ついでに配列のメソッドにブロックを与えている時点でブロックを適用する感じを醸し出していたので、動作が予想できる感じ。

書くなら断然 map のほうが楽だなぁ……

ちなみに collect, find, select を使ってる。find_all じゃなくてなぜか select, detect じゃなくてなぜか find。この場合 finddetect にして語尾を統一すべきか。

マイノリティじゃないかも。

Rubyist Magazine - Rubyist Hotlinks 【第 1 回】 最初は map はなかったみたいだ。だから collect のほうが上にあるのか。

Inserted at 2006-03-12T04:18:48+09:00

Comments (0)

Trackback URI: http://lowreal.net/logs/2006/03/11/2.trackback

NULL

RSS feed meter for http://lowreal.net/logs/latest

Alternates

  1. RSS 1.0
  2. Atom 1.0

Generated with Taglibro

この日記は Taglibro と呼ばれる XML ベースの XSLT をテンプレートとして使ったシステムを使っています。現在の Taglibro は Ruby, ruby-xslt, libxml-ruby による実装です。ソースコードはとりあえず公開していません。