From: Yukihiro Matsumoto Date: 2008-01-29T17:25:38+09:00 Subject: [ruby-dev:33495] Re: Coerce via aliased methods まつもと ゆきひろです In message "Re: [ruby-dev:33095] Coerce via aliased methods" on Mon, 14 Jan 2008 22:27:03 +0900, Yugui 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()はほと んどの人が使ってないから。 どっちですかねえ。