导入
回顾
回顾你所学到的关于 Kotlin 的知识,包括其核心原则以及这些原则如何推动语言特性的设计。
你现在对 Kotlin 的基础知识已经有了扎实的理解。在继续探索 Kotlin 学习路径之前,让我们简要回顾一下本课程中所学的所有内容。毕竟,重复是学习的关键之一。
变量与可变类型
- Kotlin 倾向于使用只读变量。
- 使用
val创建只读变量。 - 使用
var创建可变变量。 - 首先,声明一个只读变量所需的字符数与声明可变变量相同,这与其他许多语言(如 Java 需要
final关键字)形成对比。 - 其次,代码中的变量名通常排列整齐,因为这两个关键字的字符数一致。
- 使用
- 与此一致的是,Kotlin 在集合类型上也区分只读和可变类型,同样优先使用只读类型。
- 例如,简单的
listOf(...)会返回一个只读列表。 - 若要获得可变列表,必须显式写出
mutableListOf(...),从而让只读成为默认情况。
- 例如,简单的
可空类型与类型推断
- Kotlin 安全性的一个核心特性是基于类型系统的可空性。
- 所有类型默认都是非可空的。
- 因此,每个变量要么明确声明为可空,要么不可能为
null(严格来说,存在一些绕过方式设置null,但通常不会遇到)。 - 应优先使用非可空类型,因为它能简化代码并避免常见的空指针异常。
- Kotlin 编译器可以推断大多数表达式的类型。
- 例如,声明变量类型几乎总是可选的。
- 你也可以选择显式声明类型,以提升可读性或针对更抽象的类型进行编程。
条件与表达式
- Kotlin 提供
if和when来定义条件。when可以匹配多种条件,因此比其他语言中的switch更强大。
if和when在 Kotlin 中都是表达式。- 因此,你可以将变量赋值为条件的结果。
- 值由每个条件块的最后一行决定。
- 如果函数仅包含一个条件,当将该条件作为表达式使用时,可以使用简写语法重写函数。
- 因此,你可以将变量赋值为条件的结果。
- 顺便提一句,Kotlin 中大多数结构都是表达式,这使得编写更偏向函数式风格的代码成为可能。
集合
- Kotlin 的集合 API 直接建立在 Java 集合 API 之上。
- 与 Java 不同,它清晰地区分了只读集合和可变集合。
- 常见的集合类型包括
List、Set和Map。- 列表 是一种有序的线性数据结构,用于存储多个元素,允许重复。
- 集合 是一种无序的线性数据结构,用于存储多个元素,不允许重复。
- 映射 是一种无序的非线性数据结构,用于存储多个键值对,每个键只能出现一次。
循环
- Kotlin 提供
for和while循环。while用于在给定条件不再成立前重复执行一段代码。for用于遍历任何实现了Iterable接口的对象。- 包括集合、字符串、范围(如
1..10)、数组等。 - 这与你在其他语言中熟悉的
for循环不同,后者需要定义循环计数器变量。- 它的作用类似于“foreach”循环,这种循环在许多其他语言中也存在。
- 包括集合、字符串、范围(如
函数
- Kotlin 在函数声明方面提供了多个有趣的功能。
- 对于函数体中只有一条表达式的函数,可以使用简写语法,避免冗余。
- 函数参数可以设置默认值,从而在绝大多数情况下无需函数重载。
- 调用函数时,可以显式写出参数名称,以增强某些场景下的可读性。
- 扩展函数允许几乎无限地扩展某个类型的 API。
- 这在处理第三方 API 的不完善之处时非常有用。
- 你可以定义中缀函数,使函数名位于两个参数之间,从而提高可读性。
- 最后,你可以在任意类型上实现预定义的一组操作符函数。
- 由于 Kotlin 强调函数式编程,它还提供了更多关于 Lambda 函数的高级特性,但本课程未涵盖这些内容。
总结
恭喜你!🎉 完成本课程后,你现在已经能够编写简单的 Kotlin 脚本和应用程序。凭借对语言基础的扎实掌握,你将有能力应对更高级的内容,例如函数式编程和面向对象编程(请参见下一课)。
感谢你坚持完成整个课程!希望你在这段学习旅程中收获颇丰,也享受其中的乐趣。
在最后一课中,我将为你推荐一份精心挑选的 Kotlin 学习资源清单,作为你进一步深入探索这一优秀编程语言的下一步建议。