Swift包和模块有什么区别?

Wil*_*ken 7 swift swift3 swift-package-manager

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

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

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

Dan*_*bar 17

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

迅速包可以包含一个或多个模块夫特-每个夫特模块什么语言知道,并且迅捷模块定义的事物,如访问控制(范围public,internal,private例如).Swift包还可以包含其他类型的目标或模块,例如它可以包含要构建到库中的C源代码体.

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

作为具体的例子https://github.com/apple/example-package-fisheryates夫特包(如所指由Package.swift在顶部电平),通过其URL标识,它包含有两个源的单个夫特模块:https: //github.com/apple/example-package-fisheryates/tree/master/Sources.

  • 谢谢,这个类比非常有帮助 (2认同)
  • 模块是 .framework 还是由 .swift 文件组成的文件夹? (2认同)

San*_*osh 6

正如Swift.org中提到的

\n\n
\n

模块: Swift 将代码组织成模块。每个模块都指定一个命名空间,并对可以在模块外部使用的代码部分实施访问控制。

\n\n

程序可能将其所有代码都放在单个模块中,也可能\n 导入其他模块作为依赖项。除了少数系统提供的模块(例如 macOS 上的 Darwin 或 Linux 上的 Glibc)之外,大多数依赖项都需要下载并构建代码才能使用。

\n\n

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

\n\n

包:包由 Swift 源文件和清单文件组成。名为 Package.swift 的清单文件使用 PackageDescription 模块定义\n package\xe2\x80\x99s 名称及​​其内容。

\n\n

一个包有一个或多个目标。每个目标指定一个产品并\n 可以声明一个或多个依赖项。

\n
\n