文件和目录可能有不同的命名空间,而且还可以用来识别特定的文件,因为文件和目录具有相同的名称可以是不同性质的东西区别开来。

原始场和参考场也可具有不同的命名空间(在Java中),因为如果一个原语和参考场具有相同的名称,它们可以通过被不同性质的东西来标识。

单独的名称空间在别处这样使用。例如,在Java中,可以有一个方法exampleName()和场exampleName,虽然它们具有相同的名称,它们由被不同种类的事物区分开。

有帮助吗?

解决方案

我不相信,这将是一个好主意。我想,原因涉及之类的文件系统代码的性能和简单。如果一个目录列表必须下井2或3个以上不同的路径取决于你有多少个不同的命名空间想你应该有,这很可能使代码复杂。

此外,考虑可能出现的最终用户的混乱。目前,我们有一种通过使用文件扩展名的命名空间中的文件系统提供的。你可以有file.txt的和file.dll和所有的file.exe在existant同一目录下。什么时候这些文件都存在发生同时是值得关注的问题 - 这一直是一个方法,病毒编写者利用社会工程学的一种形式,让你点击了错误的文件。试想一下,如果你能迷惑目录具有相同名称的文件呢?

其他提示

首先,这个问题是特定的语言。在纯OOP语言有原子和复合元素之间没有区别。一切都是对象。通过在纯功能性的语言类似的原因不能有函数和变量命名为相同。

第二,如果你有多态性操作,有没有办法告诉你指的是哪个变量。例如,你不能对文件和目录不同的命名空间,因为多态操作,就像

cp foo bar

在CP适用于文件和显示目录,如果你有不同的命名空间,有没有办法告诉你是怎么意思。

目录和文件不一定如此不同。他们在自己的父目录两个条目,只是一个标志,表示条目是否是一个目录或没有。您可以打开一个目录,阅读它,就好像它是一个文件,只是某些其他的操作都可以在它 - 符号链接的工作方式相同。 (这说明偏向Unix文件系统的观点,但我认为,DOS / Windows的视图的工作几乎相同的方式)。内的任何目录中,有一组成员的名称,和文件系统强制执行唯一性约束,一个目录只能有一个部件具有给定名称。

约相比,字段名的Java方法的名称---思考早在C,你不能有一个全局函数和全局变量具有相同的名称,因为在目标文件中的所有符号都在一个单一命名空间。但是你可以用C ++,因为函数“无效美孚()”被映射到重整符号名(“foo__vv”或东西)。因此,它不是这么多,他们有一个单独的命名空间,因为这将钥匙插入命名空间是一个字段“foo”的不同VS的方法“富()”。既然你不能得到关键的冲突,它们看起来像不同的命名空间,但事实是否真的它是如何实现的?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top