In article <87wub9f3rs.wl / tempest.nemui.org>,
  Tatsuki Sugiura <sugi / nemui.org> writes:

> いえ、単に「ファイル抽象化クラス」と「ディレクトリ抽象化クラス」を
> 分けたかっただけです。

理解しました。ファイルを扱うときは File.new, ディレクトリを扱うときは
Dir.new を使うんですね。

でも、一般にはあるパス名がファイルを指しているのかディレクトリを指して
いるのかはわからないわけで、それをあらかじめどちらなのか知っていないと
いけないというのは困る事があるのではないでしょうか。

例えば、vfs の Dir#entries は文字列の配列を返しますが、pathname の
Pathname#entries は Pathname の配列を返します。つまり、extname などファ
イル名に固有なメソッドを使おうと思うと、Pathname#entries の結果に対し
ては直接使えますが、Dir#entries の結果に対してはまず File.new ないし
Dir.new を呼び出す必要があります。この違いは、Pathname がファイルとディ
レクトリのどちらかを指しているか知らなくても生成できることに起因します。
まぁ、vfs でも実際に stat して調べればいいことかもしれませんが。

> # ディレクトリはファイルクラス(でもパスでも良いですが)の配列(もしくは
> # コレクション)の様に扱えると直感的で良いなぁと思うのですが……

配列を返すメソッドを用意するのでは不十分でしょうか?
(Pathname#entries のように)
-- 
[田中 哲][たなか あきら][Tanaka Akira]