Swift包和模块有什么区别?

时间:2016-09-14 20:37:58

标签: swift swift3 swift-package-manager

Swift有模块化代码,可以分类为模块。

但您可以使用Swift Package Manager来获取和安装模块。

“Swift包”和“Swift模块”之间有什么区别吗?我应该何时使用一个短语或另一个短语?

2 个答案:

答案 0 :(得分:16)

Swift包是源代码的集合......您可以将其视为一个自包含的项目,它有自己的版本和存储库。 Swift语言本身并不了解当前的包,它只是Swift包管理器使用的概念。

Swift包可以包含一个或多个Swift模块 - 每个Swift模块语言所知道的东西,Swift模块定义了访问控制(public等内容。 ,例如,internalprivate)。 Swift包还可以包含其他类型的目标或模块,例如它可以包含要构建到库中的C源代码体。

Swift包在某种意义上类似于Xcode项目,而Swift模块类似于Xcode目标。

作为具体例子https://github.com/apple/example-package-fisheryates 是一个 Swift包(由顶层的Package.swift表示),由其URL标识,它包含一个包含两个源的Swift模块:   https://github.com/apple/example-package-fisheryates/tree/master/Sources

答案 1 :(得分:0)

正如Swift.org

中所述
  

模块: Swift将代码组织到模块中。每个模块都指定一个名称空间,并对该代码的哪些部分强制执行访问控制   可以在模块外部使用。

     

程序可能将所有代码放在一个模块中,也可以   将其他模块导入为依赖项。除了极少数   系统提供的模块,例如macOS上的Darwin或Linux上的Glibc,   大多数依赖项都需要下载和构建代码才能实现   使用。

     

当您使用单独的模块来解决特定的代码时   问题,该代码可以在其他情况下重用。例如,a   提供网络请求功能的模块可以   在照片共享应用和天气应用之间共享。使用模块   让你建立在其他开发人员的代码之上,而不是   自己重新实现相同的功能。

     

包:包由Swift源文件和清单文件组成。名为Package.swift的清单文件定义了   使用PackageDescription模块打包软件包的名称及其内容。

     

包具有一个或多个目标。每个目标都指定一个产品和   可以声明一个或多个依赖项。