Logo
Section 1 / 2

回顾

回顾你所学到的关于 Kotlin 的知识,包括其核心原则以及这些原则如何推动语言特性的设计。

导入

回顾

回顾你所学到的关于 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 学习资源清单,作为你进一步深入探索这一优秀编程语言的下一步建议。

异常处理

下一步