动手写一个简单的编译器:在 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 的尾闭包语法
关于这个小项目大家有什么想法和建议,欢迎在文章下面留言,我们一起交流一下。