«前の日記(2006-03-22) 最新 次の日記(2006-03-24)» 編集

Matzにっき

迷惑メール対策なら Dr.WEB
『Dr.WEB メールデーモン』、MTA 用迷惑メール対策製品です!


2006-03-23 [長年日記]

_ [Ruby] 多値

寝ても覚めてもRubyのことを考えているわけだ。

最近は多値について考えている。 真の多値(LispやSchemeにあるようなの)を導入しようと考えていたのだが、 現状、単値の配列を多重代入で受けるケースがあまりにも多いので (たとえばString#scanの結果は多値であるべきか/配列であるべきか)、 いくつかのコーナーケースに目をつぶって配列が多値であるとするのはどうだろうかと 思うようになった。

コーナーケースとは

  • 多重代入右辺に単一のsplat operator(単項*)が存在した時に 展開ではなく「配列であることの確認」になる
  • return, yield, break, nextでも同様
  • yieldはyield []と同じ。yield 1はyield [1]と同じ。 でも、yield [1]はyield [[1]]ではなく、yield [1]のまま。

である。特に最後のが邪悪だ。

もっとも、実際問題として多重代入の右辺が単一の*であることは希だし、 yield [1]が[[1]]でなく[1]を渡すことで起きる不具合はほとんどないはず。

ここは統一性よりも実用性を選ぶべきか...。

実際にコードを動かしてみないとわからないのでハックしてみよう。

お名前:
E-mail:
コメント:
[]

«前の日記(2006-03-22) 最新 次の日記(2006-03-24)» 編集

RSS feed meter for http://www.rubyist.net/~matz/ track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.