From: Minero Aoki Date: 2004-08-09T14:47:17+09:00 Subject: [ruby-dev:24037] Re: String#each -> String#each_char 青木です。 In mail "[ruby-dev:24029] Re: String#each -> String#each_char" Shugo Maeda 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 ぽいというか、そんな感じですねえ。 さすがにやりすぎでは。 ------------------------------------------------------------------- 青木峰郎