Kotlin 的泛型系统

泛型是静态类型语言中不可缺少的一部分,Kotlin 的泛型定义和使用都类似 Java,但也有一些基于工程实践考虑的优化和改进。

Kotlin 中的属性委托:ValueKit 的实现介绍

RetroPreference 是我之前用 Java 写的一个在 Android 项目里方便使用 SharedPreferences 的小工具,它能像 Retrofit 一样定义一个方便查看和管理的接口,然后通过库提供的方法创建实现这个接口的实例来完成对 SharedPreferences 的操作。很早之前我也用 Kotlin 重写了这个工具,但是基本类型必须有一个默认值这点感觉不是很符合使用者的需求。在学习 Kotlin 的委托属性后,我意识到可以用它更简单的实现这个工具。

Anko 源码阅读笔记:构建 DSL 的基本原理

官方给出这一段 Anko AlertDialog DSL 的例子:

1
2
3
4
alert("Hi, I'm Roy", "Have you tried turning it off and on again?") {
yesButton { toast("Oh…") }
noButton {}
}

这段代码可以构造出一个简单的对话框控件,下面介绍一下这种代码是如何被 Kotlin 解析的。