お世話になっております。 A.中村です。

On Mon, 13 Oct 2003 17:51:44 +0900
Tatsuki Sugiura様 sugi / nemui.org wrote:

> > ん。ということは、(ファイル名).open「が」返すオブジェクトが、
> > ファイルとディレクトリとでは全然違うものだ、という形に
> > すればいいのかな。

> そもそもディレクトリに open は要らない気がします。

あっそうか。
ファイルなりディレクトリなりの「中身」を表すオブジェクトに
eachメソッドがあれば、それで済むんですね。

問題は、「中身を表すオブジェクト」という見方が
現状のFileやDirに似合っているか?と問われれば、
いまいちNOかも、という点でしょうか。

Dirは、それ自体はディレクトリの中身を表現するもののようですが、
Dir.chdirとかのオフトピな機能(^^;がついちゃってますし、
今有るeachメソッドで得られるモノがファイル「名」なんで、
いまいちかな…

	% ruby -e 'Dir.new(".").each{|f| p f.class}'
	String
	String
	(以下略)

#Unixって、地味に「なんでもString」な世界ですよね。
#確かにGrepとか便利なことが出来る面もあるけど、
#時折これが鬱陶しいことになる。

> ディレクトリは配列もしくはコレクションと同じように扱えると
> 直感的で良さそうですよね。

ファイルもディレクトリもURIも全部、
なにか別のデータのコレクションなんですよね。
格納されているものや格納の形が結構ばらばらなだけで、
コレクションだという意味ではみんな一緒。

名前文字列などから、
FileなりDirなりの「適切な」クラスのインスタンスを
newしてくれる関数(メソッド)とかが有れば、
まあ良いといえば良いんでしょうね。

で、ファイル(?)名の意味をどう解釈するか
(どのクラスにマップするか)が今後色々増え得るだろうから、
後から拡張可能なように
名前解釈屋(のクラス/オブジェクト)が有ればいい、のかな。



脱線ですが、ファイルの内容を読んだ時にも
「適切な」クラスのインスタンスがeachで返ってくる
みたいなものが作れないかな。
XMLだったら要素を解釈して返す(SAXってゆーんだっけ?)だろうし、
StandardMidiFileだったらTrackを返しそうだ。
ピクセル絵系のファイルの中身ならPixelかな?