NULL::something

Login via flickr, はてな, TypeKey.

2006-02-22

Ruby.each

Ruby の each 系メソッドで一つ気に入らないというか、仕方ないんだけど面倒くさいことがある。なにかっていうと index を使いたければ自分で変数作ってインクリメントしないといけないこと。each だけに関しては each_with_index があるけど、他の Enumerable なメソッドにはない。そんなに必要なわけじゃないし、だいたいは他のもっといい書き方が存在するんだけど、prototype.jseach 系を見てから、ちょっと不便だなぁって思うようになった。

prototype.jseach 系は全て indexitem が両方渡される。でも、受け取る側の関数は仮引数を常に2個書かなくてもいい。ECMAScript は引数の数に無頓着だ。いくら渡しても怒られない。仮引数を書かなくても arguments で参照できる。

対して Ruby の yield はエラーこそ出さない (call は出す) ものの、こういうことすると警告してくれちゃう。別にそれが悪いわけじゃなくて、むしろいいんだけど、っていうか block.arity で場合わけすればいいんだけど。

なにがいいたいかわからんことに。

arity の数で場合わけしたらだめか。[[:a, :b]].each {|a, b|} みたいに使えないもんなぁ。

Inserted at 2006-02-23T11:36:19+09:00

Comments (2)

nanki's image
nanki says:
Ruby Weekly News 27th June - 10th July 2005 の、"accessing index inside map" にそんな話がまとまってましたよ。 最後の、.with_index パッチの行方が気になる。
2006-02-23T10:36:14+09:00
cho45(砂糖)'s image
cho45(砂糖) says:
おあーなるほど。ありがとうございます。
2006-02-23T12:20:02+09:00

Trackback URI: http://lowreal.net/logs/2006/02/22/1.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 による実装です。ソースコードはとりあえず公開していません。