- 246 名前:227 mailto:sage [2010/01/20(水) 00:29:52 ]
- 連投すみません。
メソッド呼び出しの構文について質問です。 Rubyでは、 my_object.my_method arg1, arg2 のようにメソッド呼び出しの括弧を省略する事ができます。 これはとても便利だと思うので、自作の言語にもこの文法を取り込みたいです。 一方で、JavaScriptのように関数をファーストクラスオブジェクトとして 扱いたいという要求もあります。 window.set_on_exit(object.my_event_handler) などとして、イベントハンドラを追加できるような文法を考えています。 Rubyでは、 a = my_object.my_method とした時に、my_methodが呼び出され、実行結果が変数aに代入されます。 しかし、自作の言語の現在の仕様では、メソッド自体が変数aに代入されます。 この差をどう埋めるべきかで悩んでいます。 案としては、 - 特定のメソッドの時には引数は評価されないようにする。 - a = &(object.method) か a = object.&method のように&を必要とする。 などがありますがどれも綺麗ではないです。 個人的に一番良いかなと思っている仕様は、 a = object.method <= methodが返る a = object.method arg <= methodが実行される a = object.method() <= methodが実行される という、引数があれば関数呼び出しで、引数が無い場合は括弧の省略は不可という仕様です。 これは分かりにくいでしょうか? ご意見頂ければ幸いです。
|

|