1.Kotlin 一个很厉害的游戏源码游戏源码 DSL 写法
Kotlin 一个很厉害的 DSL 写法
好久没写博客了,今天发几个最近在各个地方看到的写法写一些碉堡了的 Kotlin DSL。
本文先介绍一种 DSL 写法,游戏源码游戏源码再推荐几个 DSL 项目。写法写
超厉害的游戏源码游戏源码 DSL
之前在 KotlinTest 上看到一个很牛逼的写法(我把 README 里的实例改了下):
这其中涉及了好几个 DSL 要素。我一一列举:
字符串后面跟一个代码块
这个东西的写法写react源码系统架构原理你只要看了源码就知道了,很简单,游戏源码游戏源码但是写法写你不看就是想不到(这也是我厨 Kotlin 的原因之一,它很简单,游戏源码游戏源码 但是写法写可以玩出很多花样来)。
就这样你可以利用这个 extension 写出字符串后面跟一个代码块的游戏源码游戏源码 DSL 。 此处使用的写法写语言特性有:
明白了吧。
使用
举个例子,游戏源码游戏源码源码可以盗取吗把他作为一个 URL 的写法写 utility :
表格字面量
就是形如
这样的东西(上面的代码纯粹搞起耍,请不要在意)。游戏源码游戏源码
这个就更简单了我觉得你们应该都知道:
无非就是变长参数。
形如 "(+ 1 1)" shouldBe 2 的测试
这个也很简单,我在小标题里写的就是我在 lice 里使用的测试。
首先,idea 查看源码技巧假定我们有以下测试:
我们希望写成:
很简单,可以有:
就是一个中缀表达式而已。这有什么难的?
一些特定情况
我给我的 lice 写的测试中直接把运行字符串的那一步给包含进去了:
看到没有,运行 lice 代码就是这么简单,还能返回最后一个表达式的值 (喂
注意事项
任何长得类似这样的 DSL 都有一个缺点,就是牛势通道源码缩进膨胀(字面意思)。 Scala 为了解决这个问题, 推荐用户使用 Tab size 2 的缩进(喂。 于是我也建议读者使用 2 空格缩进。
几个厉害的 DSL 项目
根据推荐程度排序:
Anko
传送门,不说了,最强的caiq国际溯源码 Kotlin DSL 框架,想必大家早已有所耳闻:
厉害吧。这个框架是用于 Android 的,用于描述 UI 。有一点要说一下,现在的预览插件挂了。
弹窗:
还有一些非 UI 的吊炸天的代码块,比如异步:
两个基于 Swing 的 DSLGensokyo
传送门,一个刚出来的项目,它长这样:
Swing 其实没那么垃圾,只要配上 DSL ,啥 GUI 代码都变得好看了。
FriceEngine DSL
这是我之前弄的那个游戏引擎的 DSL 系统, 传送门,它长这样:
我自己觉得做的还不错。我还为它搞了个中文版,比较粗鄙,用于讽刺中文编程,请前往同项目的 README 查看。
官方教程里的 HTML DSL
传送门,它长这样:
这代码也是我从 README 里面改过的,原文太瘦了,我改的胖一点。
官方给的例子,非常给力(当时也是看这个的源码搞懂了 anko 的原理)。
JavaFX DSL
传送门,它长这样:
我个人觉得很不错了已经。
嘛。祝大家玩 Kotlin 开心。