Swift 中的 import func、struct、class 和 @_exported 是什么?
What is import func, struct, class, and @_exported in Swift?
在 Apple github 中,他们使用 Swift 包管理器
import func POSIX.isatty
import func libc.strerror_r
import var libc.EINVAL
import var libc.ERANGE
import struct PackageModel.Manifest
还有一个文件,其中唯一的代码是 @_exported
source
@_exported import func libc.fileno
这是 Swift 3 的功能吗?我找不到任何地方可以在 Swift 文档中导入类型,而在 @_exported
.
中找不到任何内容
您只能导入模块的特定部分,不能导入整个模块:
Providing more detail limits which symbols are imported—you can specify a specific submodule or a specific declaration within a module or submodule. When this detailed form is used, only the imported symbol (and not the module that declares it) is made available in the current scope.
例如 import func POSIX.isatty
将从模块 POSIX
导入函数 isatty
而不是导入整个模块 POSIX
(这是大的)。
@_exported
属性以下划线开头。这意味着它是一个私有 Swift 属性。不是功能,是实现细节。
简而言之,此属性允许您从另一个模块导出符号,就好像它来自您的模块一样。
在 Apple github 中,他们使用 Swift 包管理器
import func POSIX.isatty
import func libc.strerror_r
import var libc.EINVAL
import var libc.ERANGE
import struct PackageModel.Manifest
还有一个文件,其中唯一的代码是 @_exported
source
@_exported import func libc.fileno
这是 Swift 3 的功能吗?我找不到任何地方可以在 Swift 文档中导入类型,而在 @_exported
.
您只能导入模块的特定部分,不能导入整个模块:
Providing more detail limits which symbols are imported—you can specify a specific submodule or a specific declaration within a module or submodule. When this detailed form is used, only the imported symbol (and not the module that declares it) is made available in the current scope.
例如 import func POSIX.isatty
将从模块 POSIX
导入函数 isatty
而不是导入整个模块 POSIX
(这是大的)。
@_exported
属性以下划线开头。这意味着它是一个私有 Swift 属性。不是功能,是实现细节。
简而言之,此属性允许您从另一个模块导出符号,就好像它来自您的模块一样。