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

source

还有一个文件,其中唯一的代码是 @_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 Declaration

例如 import func POSIX.isatty 将从模块 POSIX 导入函数 isatty 而不是导入整个模块 POSIX (这是大的)。

@_exported 属性以下划线开头。这意味着它是一个私有 Swift 属性。不是功能,是实现细节。 简而言之,此属性允许您从另一个模块导出符号,就好像它来自您的模块一样。