From: "U.Nakamura" Date: 2007-10-31T17:40:57+09:00 Subject: [ruby-dev:32165] Re: alias_method allows illegal identifier name こんにちは、なかむら(う)です。 In message "[ruby-dev:32164] Re: alias_method allows illegal identifier name" on Oct.31,2007 17:09:05, wrote: | >| alias_method で、新しい名前に識別子としては不正な | >| 文字列を渡しても、別名定義できてしまいます | > | >別に不正ではないのです。 | | リファレンスマニュアルの「メソッド定義」に | -- メソッド名としては通常の識別子の他に、再定義可能な演算子(例: ==, +, - | など)も指定できます | | とあったので、メソッドの名前として、正しくないものを受け付けないものだと | 思ってました。 def文では、そこに書かれている通りの名前しか指定できません。 ですが、そこには何が指定できるかが書いてあるだけで、メソッド 名として何が正しくて何が正しくないかは書いてないですよね? というわけで、メソッド名としては実際にはSymbolとして有効にな りうる任意の名前をつけることが可能です。 ただし、def文では上記の通り通常の識別子または再定義可能な演算 子しか定義できませんし、また通常のメソッド呼び出し構文では同 様に通常の識別子または演算子しか用いることはできません。 これら以外の名前のメソッドを定義するにはModule#define_method が使えますし、またalias文やModule#alias_methodでそのような別 名をつけることも可能です。 呼び出す際は、先に書いたとおりObject#__send__などが使えます。 それでは。 -- U.Nakamura