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

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

20 messages 2007/01/30

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

From: Yukihiro Matsumoto <matz@...>
Date: 2007-01-08 10:26:30 UTC
List: ruby-dev #30111
まつもと ゆきひろです

In message "Re: [ruby-dev:30109] Re: send/__send__ and private method"
    on Mon, 8 Jan 2007 17:17:08 +0900, Urabe Shyouhei <[email protected]> writes:

|Yukihiro Matsumoto wrote:
|> (5) send!, __send!の各メソッドは廃止。privateメソッドを呼ぶ
|>     ためのprivateメソッドfuncallが追加。使い方は
|>
|>       funcall name, args...
|>
|>     privateなのでobj.funcallという風には使えない。他のオブジェ
|>     クトのprivateメソッドが呼びたい時にはinstance_evalなどを
|>     使う。
|
|selfのprivateメソッドが呼びたければ普通にこれまでどおりの方法で呼べばい
|いんじゃないですか?わざわざfuncallを経由する理由は?
|この(5)がどのような用法を意図しているのかが見えません。具体例を示してい
|ただいた方がわかりやすいと思います。

なにか誤解があるのかな? funcallはsend同様に動的にメソッド名
を決定したい時に使うメソッドです。メソッド名が固定のときは
「普通にこれまで通りの方法で呼べばよい」です。

  methods = {:exposure => :repaint,
             :mousemove => :move,
             :mouseover => :push}
  funcall methods[events], *args

のような感じだと思っていただければ。

In This Thread