命名空间或包是一样的?我使用Perl,我们只有包裹.我知道还有其他的编程语言也包括模块.
有什么不同?
解决方法
命名空间是一个通用计算术语,意思是用于不同标识符集合的容器.相同的标识符可以独立出现在不同的命名空间中,并引用不同的对象,并且明确标识对象的完全限定标识符由命名空间加标识符组成.
Perl使用package
关键字实现命名空间.
一个Perl模块是完全不一样的.它是一段Perl代码,可以并入任何使用use关键字的程序.文件名应以.pm – 以Perl模块结尾,并且其包含的代码应该具有使用等同于文件名称的包名称的包语句,包括其路径.例如,一个写在My / Useful / Module.pm文件中的模块应该有一个包语句,如包My :: Useful :: Module.
你可能会想到的是一个类,它再次是一般的计算术语,这一次意味着一种面向对象的数据类型. Perl使用它的包作为类名,面向对象的模块将有一个构造函数子程序 – 通常称为new – 将返回对已经被使用为blessed
的数据的引用,使其以面向对象的方式运行.绝对不是所有的Perl模块都是面向对象的:一些可以是简单的子例程库.