質問

ファイルとディレクトリは異なる名前空間を持つことができ、かつ同じ名前のファイルとディレクトリは、物事の異なる種類であることによって区別することができますので、まだ、特定のファイルを識別するために使用されます。

プリミティブおよび参照フィールドが同じ名前を持っていた場合、彼らは物事の異なる種類であることによって識別される可能性があるためです。

プリミティブフィールドと参照フィールドは、(Javaで)別の名前空間をも持つことができ

別の名前空間は、他の場所でこのような使用されています。たとえば、Javaでは、あなたは、メソッドexampleName()とフィールドexampleNameを持つことができ、それらが同じ名前を持っているものの、彼らは物事の異なる種類であることによって区別されます。

役に立ちましたか?

解決

私はこれは良いアイデアだと信じていません。私は理由はファイルシステムのコードのパフォーマンスとシンプルさのようなものを含んでいることを想像してみてください。ディレクトリのリストは、あなたが持っているべきだと思いますどのように多くの異なる名前空間に応じて、ダウン2つのまたは3以上の異なるパスを行かなければならなかった場合、これはおそらく、コードが複雑になる。

また、発生する可能性のあるエンドユーザーの混乱を考えます。現在、我々は、ファイルの拡張子を使って、ファイルシステムで利用できる名前空間をのようなものを持っています。あなたはfile.txtとし、ファイル.dllを持っているし、同じディレクトリ内のすべてのexistantをFILE.EXEすることができます。どのようなこれらのファイルが同時に存在する場合に発生することは懸念される - これは間違ったファイルをクリックしてあなたを得るためにソーシャルエンジニアリングのフォームを使用するウイルス作成者のための1つの方法でした。あなたにも同じ名前のファイルとディレクトリを混同することができれば想像?

他のヒント

まず、この質問は、言語固有のものです。純粋なOOP言語では、原子と化合物の要素の間に区別はありません。すべてが対象です。純粋な関数型言語で同様の理由によって、あなたは同じ名前の関数や変数を持つことができません。

あなたは多型の操作を持っている場合は、

第二に、あなたはを参照してくださいでしたどの変数伝える方法はありません。たとえば、

のようなので、多型事業のファイルとディレクトリの異なる名前空間を持つことができません
cp foo bar

CPは、ファイルとのdirsに動作し、あなたが別の名前空間を持っている場合、あなたは何を意味した指示する方法はありません。

ディレクトリとファイルは、必ずしもそう違いはありません。彼らは、エントリがディレクトリであるかどうかを示すためだけのフラグを使用して、両方の親ディレクトリ内のエントリです。あなたは、IT-シンボリックリンクが同じように動作上だけでは、特定の他の操作が可能であり、ディレクトリを開いて、それがファイルだったかのようにそれを読むことができます。 (この説明は、Unixファイルシステムのビューに偏っているが、私はDOS / Windowsのビューは、ほとんど同じようにうまくいくと思います)。任意のディレクトリ内には、そこにメンバーの名前の集合であり、ファイルシステムは、ディレクトリのみを指定された名前の一つのメンバーを持つことができる一意性制約を強制します。

オブジェクト・ファイル内のすべてのシンボルは、単一の名前空間にあるため、

フィールド名に比べてJavaメソッドの名前を考える---バックCで、あなたは、同じ名前を持つグローバル関数とグローバル変数を持つことができませんでした。しかし、あなたがC ++で、ため機能「のボイドのfoo()は、」マングルされたシンボル名(「foo__vv」か何か)にマッピングされた可能性があります。だから、名前空間にキーがメソッド「のfoo()」対フィールド「foo」というのために異なっているとして、彼らは、別の名前空間を持っていることはあまりありません。あなたがキー衝突を得ることができないことを考えると、彼らは別の名前空間のように見えるが、実際にそれがどのように実装されていますということですか。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top