[#24112] ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。原因を追求してたのですが、力尽きました。

19 messages 2004/08/18
[#24127] Re: ruby/tk crashes on bcc32 — Hidetoshi NAGAI <nagai@...> 2004/08/19

永井@知能.九工大です.

[#24131] Re: ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/08/19

山本です。

[#24135] Re: ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/08/19

山本です。試行錯誤の結果、これで落ちなくなりました。

[ruby-dev:24014] Re: String#each -> String#each_char

From: Minero Aoki <aamine@...>
Date: 2004-08-02 10:48:26 UTC
List: ruby-dev #24014
青木です。
二通にまとめて返信します。


  In mail "[ruby-dev:24009] Re: String#each -> String#each_char"
    matz@ruby-lang.org (Yukihiro Matsumoto) wrote:

> まつもと ゆきひろです

> しかし、「不便」というのはどういうことなのか青木さんは教えて
> くださっていません。青木さんはline単位のeachを多用するってこ
> となんですかねえ。

はい。

* each_line が each でなくなると不便
  (行単位の each や map や select を活用しているから)

* 文字単位の each があっても不便
  (map とか select とか inject を使う場面に出会ったことがない)
  (Rubyレベルで文字単位に処理するのは遅すぎて使いものに
   ならなかった経験がある。正規表現を活用したほうがずっといい)

の、二点で不便だと思います。


  In mail "[ruby-dev:24012] Re: String#each -> String#each_char"
    Shugo Maeda <shugo@ruby-lang.org> wrote:

> 前田です。

> > 元々の問題は「each ではないイテレータを使って Enumerable したい」
> > というところにあるのでしょう。
> 
> そういう側面もあるかもしれませんが、文字列のeachにふさわしい挙動は何か、という問題意識があります。
> つまり、文字列のデフォルトの繰り返し単位は文字(ないしはそれに準ずるもの)であるべきだ、と主張します。
> やはりString#[]と同じ単位で繰り返す方が自然ではないでしょうか。

#each は #[] と同じ単位を使うべき、とは思いません。

現時点において each は「Enumerable のメソッドの基盤となる」という
点で他のメソッドと比べて明らかに有利です。ですから、each の単位を
何にするかはメソッドの使いやすさの観点から決めるほうが適切であると
主張します。

そして上記のように、わたしは String#map や #select をよく使います。
逆に、文字単位の map や select には全く魅力を感じません。

他の傍例としては、IO#each が「行」を単位に選んでいることが挙げら
れます。IO#each を each_byte や each_block (ないけど) の alias に
することも可能だったはずです。この事実は、文字列のかたまりを扱う
場合は行を単位として扱うのが *現実的に便利だ* ということを表して
いるのではないでしょうか?

また、IO#each からの類推が働くという点でも、String#each が行を単位と
するのは優れていると思います。
-------------------------------------------------------------------
青木峰郎

In This Thread