动手写一个简单的编译器:在JavaScript中使用Swift的尾闭包语法
最近业余时间在学习SwiftUI
的过程中发现在SwiftUI
中大量使用了尾闭包
(Trailing Closure
)的语法,觉得挺有趣的。作为一个经常使用JavaScript
作为开发语言的前端来说,我忽然想可不可以自己写一个简单的编译器,在JavaScript
中使用这种语法呢?
于是就有了这个小项目 js-trailing-closure-toy-compiler ,通过这个编译器我们可以将下面的代码:
a(){}
转换为:
a(() => {});
或者将:
a(1, "hello"){ b, c in
d()
d{}
d(1, "hello")
d(1, "hello"){}
d(1, "hello"){ e, f in
g()
}
}
转换为:
a(1, "hello", (b, c) => {
d();
d(() => {});
d(1, "hello");
d(1, "hello", () => {});
d(1, "hello", (e, f) => {
g()
})
})
关于Swift
的尾闭包如果你不是很理解,可以参考Swift
关于 Closures 的文档
项目的在线演示地址:JavaScript Trailing Closure Toy Compiler
关于项目代码部分的详细解释可以阅读这篇文章:动手写一个简单的编译器:在JavaScript中使用Swift的尾闭包语法
关于这个小项目大家有什么想法和建议,欢迎在文章下面留言,我们一起交流一下。