[#24698] NKF(nkf2)を1.8ブランチに入れました — "NARUSE, Yui" <naruse@...>

naruseです。

14 messages 2004/11/03
[#24734] Re: NKF(nkf2)を1.8ブランチに入れました — 堀川 久 <vzw00011@...> 2004/11/06

こんにちは。

[#24720] メール関係ライブラリの標準添付について — MoonWolf <moonwolf@...>

MoonWolfです。

17 messages 2004/11/05
[#24721] Re: メール関係ライブラリの標準添付について — Yukihiro Matsumoto <matz@...> 2004/11/05

まつもと ゆきひろです

[#24722] Re: メール関係ライブラリの標準添付について — MoonWolf <moonwolf@...> 2004/11/05

MoonWolfです。

[#24804] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...>

mput です。 ruby-dev に移動します。

21 messages 2004/11/13
[#24805] Re: まつもとさんの負担を減らすために、何ができるだろう — Tanaka Akira <akr@...17n.org> 2004/11/13

In article <2D6284E3-351D-11D9-B7EF-000393735AAE@mput.dip.jp>,

[#24806] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...> 2004/11/13

mput です。

[#24808] Re: まつもとさんの負担を減らすために、何ができるだろう — Masayoshi Takahashi <maki@...> 2004/11/13

高橋征義です。

[#24809] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...> 2004/11/13

mput です。

[#24834] Process.getrlimit and Process.setrlimit — Tanaka Akira <akr@...17n.org>

Process.getrlimit と Process.setrlimit が欲しいので実装してみました。

25 messages 2004/11/13

[#24965] sync and stdio buffering — Tanaka Akira <akr@...17n.org>

ちょっとした思いつきなのですが、

12 messages 2004/11/26

[#24993] rb_io_sysread dumps core [BUG] rb_sys_fail() - errno == 0 — Tietew <tietew-ml-ruby-dev@...>

ソケットとスレッドを大量に使うアプリ(具体的には IRCbot です)を

13 messages 2004/11/29

[#25003] IO#flush dumps core again — Tanaka Akira <akr@...17n.org>

次のようにすると core を吐きます。

28 messages 2004/11/30
[#25004] Re: IO#flush dumps core again — nobu@... 2004/11/30

なかだです。

[#25005] Re: IO#flush dumps core again — Yukihiro Matsumoto <matz@...> 2004/11/30

まつもと ゆきひろです

[#25009] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/01

In article <1101836040.635395.27476.nullmailer@x31.priv.netlab.jp>,

[#25014] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/01

In article <1101878558.979715.1359.nullmailer@x31.priv.netlab.jp>,

[#25015] Re: IO#flush dumps core again — Yukihiro Matsumoto <matz@...> 2004/12/01

まつもと ゆきひろです

[#25056] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/05

In article <1101888165.570792.4192.nullmailer@x31.priv.netlab.jp>,

[#25074] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/06

In article <1102293033.356112.2288.nullmailer@x31.priv.netlab.jp>,

[ruby-dev:25007] object.c convert_type says error with -d option

From: SASADA Koichi <ko1@...>
Date: 2004-11-30 22:05:33 UTC
List: ruby-dev #25007
 ささだです。

 最新版の HEAD で p "abc" すると、

Exception `NoMethodError' at mkmonthpage.rb:3 - undefined method `to_ary' for "abc":String

 こんなエラーを ruby -d で起動すると吐くようになりました。
(デバッグ用の、フックされた例外も表示する機能)


これは、

* object.c (convert_type): [ruby-core:03845]

 の変更だと思うのですが、いつも ruby -d で実行している私には
このエラー表示は少々鬱陶しいと思えます。

 そこで、ruby-core の該当部分への代替案を考えてみました。
日本語で失礼します。-d 好きの私としては、検討して頂ければ
嬉しいです。


現状:

 とりあえず変換メソッド(to_ary など)を rb_funcall_rescue で
呼んでみる。


代替案:

1. rb_funcall(respond_to?)

 コストの問題から却下、とまつもとさん([ruby-core:03845])


2. rb_respond_to() を呼べるなら呼んでみる

 対象オブジェクトが respond_to? を上書きしているか調べる。

 具体的には、対象オブジェクトに対してメソッド検索をかけて、
それが Object#respond_to? ならば rb_respond_to() を呼ぶ。

(2.1)
 そうでなければ、rb_funcall(respond_to?) を呼ぶ。

(2.2)
 そうでなければ、rb_funcall_rescue(convert_method) を呼ぶ。


3. rb_respond_to の定義を変える

 rb_respond_to() 実行時、2. と同様に respond_to? が再定義
されているか調べる。再定義されていれば、rb_funcall(respond_to?)、
そうでなければ従来動作。

 でも、Object#respond_to? でもこのチェックを入れるのは不毛で
すね。二つに分ければいいのかな。



・rb_respond_to を用いる案の問題点

a. to_ary は method_missing などできちんとやるんだけど、
   respond_to? を再定義していなかった場合

>再定義しない奴が悪い


b. respond_to? を method_missing などできちんとやる
(再定義されているかの判断が不可能)

>respond_to? くらいきちんと再定義しろよ


・rb_respond_to を用いる案のメリット

i. 変換メソッドがなかった場合のパフォーマンス向上

ii. -d で鬱陶しくない



 別に -d で鬱陶しくしなくするためだけには、暗黙の変換で利用
されるメソッドを Object で定義すればいいんですかね。それがい
いか悪いかはちょっとわかりません。

-- 
// SASADA Koichi at atdot dot net
//

In This Thread

Prev Next