[#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:24023] Re: String#each -> String#each_char

From: Minero Aoki <aamine@...>
Date: 2004-08-05 21:42:31 UTC
List: ruby-dev #24023
青木です。補足します。

  In mail "[ruby-dev:24022] Re: String#each -> String#each_char"
    I wrote:

> src\dst   String          Array               IO
> -------+---------------------------------------------------
> String |     -             ない*1         StringIO.new(str)
> Array  | lines.join('')      -               ない*2
> IO     | io.read        io.readlines           -

自分でも今ようやくわかってきたんですが、ここで言う String, Array,
IO というのは、値として String や Array が欲しいのではなくて、

  1. 文字指向・内部イテレータインターフェイス (gsub, strip...)
  2. 行指向・内部イテレータインターフェイス (each, map, select, ...)
  3. 文字指向・外部イテレータインターフェイス (getc)
  4. 行指向・外部イテレータインターフェイス (gets)

の四つが欲しかったのだと定式化できそうです。

# strip はイテレータじゃないけど、メソッド内に制御があるという
# ところに類似点を見付けてみた。


これまでは String が

  1. 文字指向・内部イテレータインターフェイス (gsub, strip...)
  2. 行指向・内部イテレータインターフェイス (each, map, select, ...)

の二つをカバーし、IO / StringIO が

  3. 文字指向・外部イテレータインターフェイス (getc)
  4. 行指向・外部イテレータインターフェイス (gets)

をカバーしていたわけですが、String#each が変わると 2. が使いにくく
なってしまう。かと言って文字列配列中心ソリューションでは 1. 3. 4.
との相互変換が弱い。

そこで解決策としては、やはり文字列と IO/StringIO を基本としつつも
String#lines と enumerator 強化によって 2. を補う。さらに ArrayInput
によって 2. → 4. の変換を補う。2. → 1./3. への変換は捨てる。
このような考えが前のメールの背景にあったと思われます。
-------------------------------------------------------------------
青木峰郎

In This Thread