[#21225] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2003/08/22
[#21227] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — nobu.nakada@... 2003/08/22

なかだです。

[#21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — matz@... (Yukihiro Matsumoto) 2003/08/22

まつもと ゆきひろです

[#21281] 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...>

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

16 messages 2003/08/29
[#21285] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/08/29

まつもと ゆきひろです

[#21288] Re: 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...> 2003/08/29

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

[#21306] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/09/03

まつもと ゆきひろです

[ruby-dev:21119] odd behavior of Object#public_methods, etc

From: Koji Arai <JCA02266@...>
Date: 2003-08-04 06:35:55 UTC
List: ruby-dev #21119
新井です。

ruby 1.8 feature に

|   Object#methods 以外の Object#public_methods などは引数が false のときは
|
|    □ 特異メソッドを持つオブジェクトでは特異メソッドのリスト
|    □ そうでなオブジェクトではクラスで定義されているメソッドのリスト
|
|   という動作をします。(これは実装の都合でそうなっているだけらしいので将来変わ
|   る可能性があります)

ということが書いてあって(私が書いたんですがどこで見たんだか
全然覚えてない)、試してみると確かにそういう動作をします。

    obj = String.new

    p obj.methods(false)
    p obj.singleton_methods(false)
    p obj.public_methods(false)

    def obj.foo
    end

    p obj.methods(false)
    p obj.singleton_methods(false)
    p obj.public_methods(false)
    => ruby 1.8.0 (2003-08-03) [i586-linux]
       []
       []
       ["crypt", "index", ... ]    <= これが
       ["foo"]
       ["foo"]
       ["foo"]		           <= 特異メソッドを定義しているとこうなる

言いたいことは二点で

   * public_methods 等のこの振舞はこのままでしょうか?

   * 思うに obj.methods(false) や public_methods(false) はそ
     のクラスのインスタンスメソッドと特異メソッドを返すよう
     にし singleton_methods とは差別化をはかった方がきれいな
     気がします。

が、これ以上これらのメソッドに手を加えるのはつらいな。二番目
は積極的には推しません。一番目も 1.8.0 に間に合わせなくても
いいと思います。

--
新井康司 (Koji Arai)

In This Thread

Prev Next