无需编译即可使用的扩展

Extension available for use without compilation

我想检查是否有必要在使用刚刚创建的扩展之前编译代码。作为测试,我创建了一个示例扩展

extension String {
    func checkExtension() {

    }
}  

当我这样做时,我既没有保存 Swift 文件中的更改,也没有编译代码。但是 checkExtension 可用于 String 变量。

Query : SDK如何在不编译的情况下知道已经创建了一个扩展,并且它的功能可以在相应的 class 中使用?

Swift 前端编译器会处理这个问题。

所以Compiler分为Front end和Back end。

前端:负责词法分析、句法分析(解析)、语义分析

后端:优化、机器相关优化、代码生成。 (有时分析和优化被称为中端)

在Swift编译器架构中,他们将词法分析器和语法分析器称为解析器。它构建了 AST(抽象语法树)。 Which 用于知道什么属于哪里,AST 用于在我们输入错误时发现错误和 Auto Complete 等等。同样,swift 扩展就是这样工作的。

当我们构建或编译我们自己时,后端开始发挥作用。当我们谈论编译器时,我们通常将其称为编译器。但是在 Most IDE's 中,fornt end 始终处于活动状态。

参考:https://swift.org/compiler-stdlib/#compiler-architecture