小林です。

----- Original Message -----
送信者 : Yukihiro Matsumoto <matz / netlab.co.jp>
件名 : [ruby-dev:8841] Re: [ruby-list:20054] Re: == === case


>
> 現状では a が b を知らないとき b に頼むという形になっていま
> すので、a が b に頼んでだめなら、頼んだ時点ですでに a は b
> についての知識がないことが明らかなのでもう手がないと思います。
>
すいません。よく考えれば、その通りです(赤面)。
私は「頼みに来ない時」にどうするかを考えていたのですが、
はっきり言って、説明間違いでした。

で、例をあげれば("3.14"が文字列であることは横において)
 "1.23"==x
は機能しないことがあります。xは"1.23"を知っていても、
"1.23"が頼みに来ない("1.23"がx.coerceを呼ばない)から。
でも、x=="1.23"なら、xは"1.23"の扱い方を知っているので
("1.23"が頼みに来るたときと同様に)処理できるわけです。
ですので、
  もし"1.23"==xのような構文で、かつ、"1.23".type!=x.type
  さらに、"1.23"がx.coerceを呼ばなければ、Rubyインター
  プリタが代わりにx.coerceを呼んでから「"1.23"==x.coerced」
  を実行してくれないかな?
等と、むしのいいことを考えた次第です。

たぶん、これは過去にも議論されたものと思いますので、
(後で)過去ログを探してみます。

小林 茂雄
E-Mail: shigeo / tinyforest.gr.jp
WWW: http://www.tinyforest.gr.jp