Kotlin 核心编程 (31):基础语法 2.4

阅读数:1 2019 年 12 月 25 日 15:33

Kotlin核心编程(31):基础语法 2.4

(面向表达式编程)

内容简介
本书不是一本简单介绍 Kotlin 语法应用的图书,而是一部专注于帮助读者深入理解 Kotlin 的设计理念,指导读者实现 Kotlin 高层次开发的实战型著作。书中深入介绍了 Kotlin 的核心语言特性、设计模式、函数式编程、异步开发等内容,并以 Android 和 Web 两个平台为背景,演示了 Kotlin 的实战应用。
全书共 13 章,分为 4 个部分:
热身篇—Kotlin 基础(第 1~2 章),简单介绍了 Kotlin 设计哲学、生态及基础语法,其中包括 Kotlin 与 Scala、Java 之间的关联与对比,以及 Kotlin 的类型声明的特殊性、val 和 var 的使用、高阶函数的使用、面向表达式编程的使用、字符串的定义与操作等内容;
下水篇—Kotlin 核心(第 3~8 章),深入介绍了面向对象、代数数据类型、模式匹配、类型系统、Lambda、集合、多态、扩展、元编程等 Kotlin 开发核心知识,这是本书的重点,其中涉及很多开发者特别关心的问题,比如多继承问题、模式匹配问题、用代数数据类型抽象业务问题、泛型问题、反射问题等。
潜入篇—Kotlin 探索(第 9~11 章),探索 Kotlin 在设计模式、函数式编程、异步和并发等编程领域的应用,其中包括对 4 大类设计模式、Typeclass 实现、函数式通用结构设计、类型替代异常处理、共享资源控制、CQRS 架构等重点内容的深入剖析;
遨游篇—Kotlin 实战(第 12~13 章),着重演示了 Kotlin 在 Android 和 Web 平台的实战案例,其中涉及架构方式、单向数据流模型、解耦视图导航、响应式编程、Spring 5 响应式框架和编程等内容。

在本章之前的几节中,我们已经好几次与一个关键字打过交道,这就是“表达式”。现在罗列下我们已经提及的表达式概念:

  • if 表达式
  • 函数体表达式
  • Lambda 表达式
  • 函数引用表达式

显然,表达式在 Kotlin 这门语言中处于一个相当重要的地位,这一节我们会着重介绍在 Kotlin 中如何利用各种表达式来增强程序表达、流程控制的能力。与 Java 等语言稍显不同的是,Kotlin 中的流程控制不再是清一色的普通语句,它们可以返回值,是一些崭新的表达式语句,如 if 表达式、when 表达式、try 表达式等。这样的设计自然与表达式自身的特质相关。在了解具体的语法之前,我们先来探究下表达式和普通语句之间的区别。

表达式(expressions)和语句(statements)虽然是很基本的概念,但也经常被混淆和误解。语句很容易理解,我们在一开始学习命令式编程的时候,程序往往是由一个个语句组成的。比如以下这个例子:

复制代码
fun main(args: Array<String>) {
var a = 1
while (a < 10) {
println(a)
a++
}
}

可以看到,该程序依次进行了赋值、循环控制、打印等操作,这些都可以被称为语句。我们再来看看什么是表达式:

表达式可以是一个值、常量、变量、操作符、函数,或它们之间的组合,编程语言对其进行解释和计算,以求产生另一个值。

通俗地理解,表达式就是可以返回值的语句。我们来写几个表达式的例子:

复制代码
1 // 单纯的字面量表达式,值为 1
-1 // 增加前缀操作符,值为 -1
1 + 1 // 加法操作符,返回 2
listOf(1, 2, 3) // 列表表达式
"kotlin".length // 值为 6

这些都是非常明显的表达式。以下是 Kotlin 中更复杂的表达式例子:

复制代码
{ x: Int -> x + 1 } // Lambda 表达式,类型为 (Int) -> Int
fun(x: Int) { println(x) } // 匿名函数表达式,类型为 (Int) -> Unit
if ( x > 1) x else 1 // if-else 表达式,类型为 Int,假设 x 已赋值

正如我们所言,一些在其他语言中的普通语句,在 Kotlin 中也可以是表达式。这样设计到底有什么好处呢?

Kotlin核心编程(31):基础语法 2.4

购书地址 https://item.jd.com/12519581.html?dist=jd

评论

发布