Swift软件包和模块之间有什么区别?

Swift软件包和模块之间有什么区别?,swift,swift3,swift-package-manager,Swift,Swift3,Swift Package Manager,Swift有模块化代码,可以分为模块 但您可以使用Swift软件包管理器获取和安装模块 “Swift包”和“Swift模块”之间有什么区别吗?什么时候应该使用一个短语或另一个短语?如中所述 模块:Swift将代码组织到模块中。每个模块指定一个名称空间,并对代码的哪些部分实施访问控制 可在模块外部使用 一个程序可以将其所有代码放在一个模块中,也可以 将其他模块作为依赖项导入。除了一把 系统提供的模块,如macOS上的Darwin或Linux上的Glibc, 大多数依赖项都需要下载和构建代码,以便

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

但您可以使用Swift软件包管理器获取和安装模块

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

如中所述

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

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

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

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

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


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

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

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

作为一个具体的例子 是一个Swift包(由顶层的
包.Swift
表示),由其URL标识,它包含一个带有两个源的Swift模块:
.

谢谢,这个类比非常有用。模块a.framework或由.swift文件组成的文件夹?这两个文件的用途在本答案中都没有描述。