まつもと ゆきひろです
In message "Re: [ruby-dev:33095] Coerce via aliased methods"
on Mon, 14 Jan 2008 22:27:03 +0900, Yugui <yugui / yugui.sakura.ne.jp> writes:
|Fixnumのcoerceする演算は、エイリアス経由で使用すると例
|外を生じるようです。
|次のコードは1.8では"successfully coerced"と出力し
|ますが、trunkではNoMethodErrorを投げます。
|rb_num_coerce_binの実装において、
|rb_frame_this_func()がエイリアスのほうの名前(この場
|合、:plus)を返すためのようです。
|
|coerceの意味から言って呼び出し時の名前を使うというのはもっと
|もらしい気もする一方、
|「aliasすると挙動が変わるメソッド」というのはちょっと異
|様です。
考えてみましたが、元の名前を使うべきでしょうね。で、これをど
う直すべきかですが。
* rb_frame_this_func()を直す(のは大変であると前にささだく
んから__caller__がらみで聞いた気がする)
* rb_num_coerce_bin()を直す。具体的には明示的にメソッド名
を指定する。APIが変わるがどうせrb_num_coerce_bin()はほと
んどの人が使ってないから。
どっちですかねえ。