[Squeak-ja: 2334] Re: 画像のOID

Yoshiki Ohshima yoshiki @ squeakland.org
2005年 2月 27日 (日) 10:07:03 JST


  おおしまです。

> プログラムをしていて,悩んだ結果分かった
> ことです
> (きっと,皆さんは当然なのでしょうが)

 いえいえ、僕にとっても日々発見です。

> jpegなどの画像をそのままスケッチと
> して多数使う場合,同じスケッチをコピー
> して使います.
> そのとき,スケッチが違えばOIDが違うのは
> 分かります.オブジェクト指向ですから.
> しかし,画像ファイルにまで,違うOIDが
> 振られるのですね.(これ正しいでしょうか?)

  おそらくは、外部のファイルとして存在していた画像を元に作ったスケッチ、
ということですよね。もとのリソースを覚えておくべき、という意見はありま
すが、現状はSqueak内部に取り込んだ後は、区別のないスケッチになります。

  内部に2回以上取り込んだときにも、「同じビット列を含んだ違うオブジェ
クト」になります。違うオブジェクトである以上、定義から言って違うOIDと
なりますね。

  Squeak内部外部で編集されることを思うと比較的正しい動作だと思います。

> 画像でオブジェクトを識別するテストを書いて
> いたのですが,どうしてもうまくいかなかった
> のですが,

 確かに、画像の#=は#==を使って定義されているので、「同じかどうか」は
内容まではみてくれません。

> xxxの見た目を似せるxxx
> 
> を予め実行すると,できました.
> 
> 個人的意見としては,画像ファイルにまでOIDを
> ふると,分かりにくくなるように思うのですが,
> 皆様のご意見はいかがでしょうか?

 Squeak内部に入った後はもはや「ファイル」ではないですし、Squeak内部、
外部で編集されることを思うと一意性をどう定義するか、というのは簡単な問
題ではないと思います。理想的には画像同士の同値性比較を、ビットの内容を
見た値同値でやる、ということも考えられますが、現状はちょっと怖い感じは
します。

  ところで、「兄弟」という機能をご存知ですか?ひとつの画像から兄弟を作っ
ておき、「兄弟に触れているか?」という機能を使う可能性も考えられます。
(触れているか・重なっているかという概念が使える課題なのかはちょっと良
くわかりませんが。

-- Yoshiki



Squeak-ja メーリングリストの案内