动手写一个简单的编译器:在JavaScript中使用Swift的尾闭包语法
发布于 4 年前 作者 dreamapplehappy 2545 次预览 最后一次回复是 4 年前 来自 分享
最近业余时间在学习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的尾闭包语法
关于这个小项目大家有什么想法和建议,欢迎在文章下面留言,我们一起交流一下。
2 回复
有点意思
@i5ting 😄,谢谢支持