[#30220] schedule for Ruby 1.8.6 — "Akinori MUSHA" <knu@...>

 ruby-core を読んでいない人もいると思うので、ここでもアナウンス

20 messages 2007/01/30

[ruby-dev:30154] Re: send/__send__ and private method

From: SASADA Koichi <ko1@...>
Date: 2007-01-23 03:16:32 UTC
List: ruby-dev #30154
 ささだです。

Yukihiro Matsumoto wrote:
> | 了解しました。ちなみに、「こんなのを考えてる」という案があったら教えて
> |いただければと思います。
> 
> はい。こんな感じで。
> 
> (1) sendはpublicしかアクセスしない
> (2) sendもレシーバ付きメソッド呼び出しもprivateを「スキップ」。
>     現在は「エラー」。
> (3) 関数型メソッド呼び出しは以下の順序でメソッド探索
>     * privateメソッド(BasicObjectまで)
>     * publicメソッド(CLASS_OF(self)からBasicObjectまで)
>     この結果、matzrubyのようにグローバルメソッドキャッシュテー
>     ブルを使うならテーブルがふたつ必要になる。インラインメソッ
>     ドキャッシュは変更の必要なし(だと思う)。

 このルールだと、

class C1
  def m
    "C1#m"
  end
  private :m
end

class C2 < C1
  def m
    "C2#m"
  end

  def foo
    m
  end
end

C2.new.foo が C1#m を呼び出しますが、そういうもんでしょうか。

-- 
// SASADA Koichi at atdot dot net


In This Thread