','.join() か Array#join か
2009-07-01


','.join() がなぜキモイのか

Array#join が

の点においてキモいって指摘については反論の余地は無いと思うけど。

その他の点は言い掛かりの類じゃないのかなあ。 と、つらつら書いていたら、kwatch氏のエントリの方がはるかにまとまっていたので、駄文は大幅に減らした。

でも、気になったのはこの辺

それに対して、Rubyだとメモリ効率はあまり気にせずバンバン一時Arrayを作る。Arrayのメソッドチェーンを作ってキモチイイと悦ぶ。RubyにとってArrayは特別であり、列の汎用型は Array だ。Array以外をjoinしたかったら、 to_a.join すれば良い。

この文化の違いはお互いに理解しにくく、Pythonista から見ると「Arrayしかjoinできないなんてキモイ」し、Rubyistから見ると「Arrayで何が悪い」になってやはり結論はでない。

「Rubyだとメモリ効率はあまり気にせずバンバン一時Arrayを作る。」ってことはないし、 (array.map.map.map なんてメッソッドチェーンがキモチイイとか言う輩は居ないんじゃないかなあ) 「Arrayしかjoinできないなんてキモイ」ってのは普通に感じます。

あと、Pythonistaの人は split が分割される側の文字列のメソッドであることには、むず痒さを感じたりはしないのでしょうか?

でも、別の視点で「連結する側とされる側」というように分類すると、「区切り文字 join 連結される文字」が素直な能動態で、「連結される文字列 (is) join(ed by) 連結される文字」だと無理やりな受動態になるので、''.join() の方が素直だ。

の主張を受け入れるとすると

'sep'.split('string')

の方が素直ってことになるような気がするのですが?

以上、Ruby厨のたわごと。

[プログラム]
[Ruby]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット