青木です。
In mail "[ruby-dev:24029] Re: String#each -> String#each_char"
Shugo Maeda <shugo / ruby-lang.org> wrote:
> 前田です。
> > (1) 文字列 → 行配列 強化策
> >
> > * 文字列を行配列にするメソッド String#lines を新設する (名前はHaskellから)
> >
> > * Enumerator を組み込みにする
> > * to_enum を短くする。例えば #by とか
> > * map_by, collect_by, select_by... を全部用意してしまう
>
> Enumeratorを組込みにするのなら、String#lines(あるいは他の名前のメソッド)
> でEnumeratorを返すという手もありますね。
特定の Enumerator 生成専用のメソッドを作るというのは
いいかもしれませんね。応用範囲も広そうです。
でも、とりあえず lines は配列かな……。
とりあえず安全な行配列化メソッドを確保したいです。
# 話を広げすぎると絶対立ち消えになるし
> > (2) 配列 → IO 強化策
> >
> > * 配列からワンステップで StringIO を作れるようにする。
> > (いいメソッド名が思いつかない)
>
> StringIO.newでto_sを使うようにすればワンステップになりますけど、それが
> いいかどうかは微妙ですね。
>
> それはそれとして、Stringでもmapやselectを使うとArrayになっちゃうので、
> やっぱり同じ問題がありませんか?
そうですね。grep してみると、わりとこまめに join しているようです。
あとは puts でしょうか。map や select は連鎖することが多い点も
感覚に影響しているかもしれません。
> いっそのことMethodオブジェクトにeachをcallのaliasとして用意して、
> Enumerableをincludeしてしまうというのは強引すぎるでしょうか。
関数型っぽいというか、Python ぽいというか、そんな感じですねえ。
さすがにやりすぎでは。
-------------------------------------------------------------------
青木峰郎