まつもと ゆきひろです
In message "Re: [ruby-list:41724] Re: Tempfile#=="
on Fri, 23 Dec 2005 04:23:02 +0900, OOTANI TAKASHI <tksotn / anet.ne.jp> writes:
|> |Tempfile オブジェクトを == で比較すると false になってしまいますが、
|> |そういうものなのでしょうか。
|>
|> オリジナルに転送しちゃうんでオリジナルとTempfileが一致しない
|> ということのようです。
|
|すいません。ここの理屈がよくわかりません。
TempfileはFileをwrapしているDelegatorなので、==は内部のFile
オブジェクトへ転送されます。仮にaをTempfile、bを内部のFileオ
ブジェクトとすると
a == a
が呼び出されたとき、==メソッドは内部のFileオブジェクトに転送
され
b == a
が実行されます。しかし、bはaのことを知らないので、falseにな
るということです。これに対応するためには
* Delegator側で==を特別扱いする
* IO#==でto_ioでも使って比較する
などの対応が考えられます。今回は前者を採用して対応してみまし
た。
|何か見落としているんだとは思いますが、わかりません。
|「オリジナル」の意味するところもわかりません。
Delegatorであることが分かれば分かるんじゃないかと。