我想检查是否有必要在使用刚刚创建的扩展之前编译代码。作为测试,我创建了一个示例扩展
extension String {
func checkExtension() {
}
}
当我这样做时,我既没有在 Swift 文件中保存更改,也没有编译代码。但checkExtension
可用于String
变量。
查询:SDK 不编译怎么知道扩展已经创建,并且它的功能可以在对应的类中使用?
Swift Front End Compiler 负责解决这个问题。
所以Compiler分为Front end和Back end。
前端:负责词法分析、语法分析(解析)、语义分析
后端:优化、机器相关优化、代码生成。(有时分析和优化被称为中端)
在 Swift 编译器架构中,他们将词法分析器和语法分析器称为解析器。它构建了 AST(抽象语法树)。这是用来知道什么属于哪里,当我们输入错误时使用 AST 发现错误和自动完成等。同样的 swift 扩展就是这样工作的。
当我们构建或编译我们自己时,后端开始发挥作用。当我们谈论编译器时,我们通常将其称为编译器。但是 fornt 端在大多数 IDE 中始终处于活动状态。
参考:https : //swift.org/compiler-stdlib/#compiler-architecture
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句