[#14922] alias $gvar — Koji Arai <JCA02266@...>

新井です。

19 messages 2001/10/14

[#15006] Re: eval.c (rb_stack_check): prohibit recursive raising error — WATANABE Hirofumi <eban@...>

わたなべです。

13 messages 2001/10/26
[#15008] Re: eval.c (rb_stack_check): prohibit recursive raising error — Shugo Maeda <shugo@...> 2001/10/26

前田です。

[ruby-dev:14956] Re: alias module_function (Re: alias $gvar)

From: Koji Arai <JCA02266@...>
Date: 2001-10-17 15:09:20 UTC
List: ruby-dev #14956
新井です。

In message "[ruby-dev:14953] Re: alias module_function (Re: alias $gvar)"
  on 17 Oct 2001 09:57:20 +0900,
  nobu.nakada@nifty.ne.jp wrote:
> なかだです。
> 
> At Tue, 16 Oct 2001 10:46:29 +0900,
> Koji Arai <JCA02266@nifty.ne.jp> wrote:
> > 前は、同じように対処してそれで納得して何も言わなかったんです
> > が、改めてどうだろうって思いました。「モジュール関数」の実態
> > をマニュアルに明記してないのが問題かなあ。
> 
>  「実態」というのがどういうことを指しているのか不明ですが、
> module_functionを実行したところでmodule自身へメソッドのコピーが
> 作られるだけで、Foo#fooとFoo.fooは似ているけどまったく別のメソッ
> ドだという話でしょうか。

そういう話です。

| module_function(name ... )
|     nameで指定されたメソッドをモジュール関数にします。モ
|     ジュール関数とは通常のメソッドであると同時にモジュール
|     (またはクラス)の特異メソッドでもあるようなメソッドです。

では、モジュール関数がメソッドの特性の1つであるかのように認
識され(間違いではないけど)、モジュール関数のエイリアスはモ
ジュール関数であると、思い込んでも不思議はないだろうというこ
とです。

>  根本的な解決にはなってないかも知れませんが、aliasの後にもう一
> つmodule_function :barも追加するというのではどうでしょうか。

根本的な解決はやっぱりマニュアルの修正かなあ。alias のところ
で触れるか。落し穴にまわすか。。

以前書いたスクリプトを見たところ、以下のように逃げてました。

  module Foo
    def foo
    end
    alias :bar :foo
    module_function :bar, :foo
 end

--
新井康司 (Koji Arai)

In This Thread