在Apple的Swift Package管理器的github中,他们使用
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
上没有任何内容。
答案 0 :(得分:11)
您只能导入模块的特定部分,而不能导入整个模块:
提供更多详细信息限制导入的符号 - 您可以在模块或子模块中指定特定子模块或特定声明。使用此详细表单时,只有导入的符号(而不是声明它的模块)在当前作用域中可用。
例如,import func POSIX.isatty
将从模块isatty
导入函数POSIX
,而不是导入整个模块POSIX
(这是BIG)。
@_exported
属性以下划线开头。这意味着它是一个私有的Swift属性。不是功能,实现细节。
简而言之,此属性允许您从另一个模块导出符号,就像它来自您的模块一样。