最近业余时间在学习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 的尾闭包语法
关于这个小项目大家有什么想法和建议,欢迎在文章下面留言,我们一起交流一下。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.