dMi*_*Mix 19 programming-languages
我没有采用通常的CS路线来学习编程,我经常听到名称空间,但我并不理解这个概念.我在网上找到的描述通常是在我不熟悉的C语境中.
我一直在做Ruby 2年,我正在努力深入了解语言和OOP.
jwl*_*jwl 45
我将提供一个更普通的描述.
说我的妻子有一个名叫苏的妹妹,我也一样.我怎么能在谈话中把他们分开?使用他们的姓氏("Sue Larson"vs"Sue Jones"). 姓氏是命名空间.
这当然是一个有限的例子,在编程中,潜在的家庭成员可能比我的例子多得多,因此碰撞的可能性更高.命名空间在某些语言(例如java)中也是分层的,它与姓氏并不相同.
但除此之外它是一个类似的概念.
ras*_*ani 16
维基百科的命名空间定义:
命名空间是一个抽象容器或环境,用于保存唯一标识符(即名称)的逻辑分组....
例如,您可以找到可用的名称空间的地方是这样的:
您可以定义常量或变量,甚至是具有通用名称的类.如果您不希望重命名此常量/变量/类,但需要另一个具有相同名称的那个,则可以在不同的命名空间中定义该新实例.
在ruby中,模块与C++中的命名空间基本相同.
例如:
module Foo
BAZ = 1
end
module Bar
BAZ = 2
end
puts Foo::BAZ #=> 1
puts Bar::BAZ #=> 2
Run Code Online (Sandbox Code Playgroud)
所以,在那里,你有BAZ两个模块中声明的常量(在ruby中也称为名称空间)