Kotlin实战pdf

图书网 2020年8月29日21:04:401 2.6K

Kotlin实战 作者:(俄)DMITRY JEMEROV,(俄)SVETLANA ISAKOVA

Kotlin实战 出版社:电子工业出版社

Kotlin实战 内容简介

《Kotlin实战》将从语言的基本特性开始,逐渐覆盖其更多的高级特性,尤其注重讲解如何将 Koltin 集成到已有 Java 工程实践及其背后的原理。《Kotlin实战》分为两个部分。第一部分讲解如何开始使用 Kotlin 现有的库和API,包括基本语法、扩展函数和扩展属性、数据类和伴生对象、lambda 表达式,以及数据类型系统(着重讲解了可空性和集合的概念)。第二部分教你如何使用 Kotlin 构建自己的 API,以及一些深层次特性——约定和委托属性、高阶函数、泛型、注解和反射,以及领域特定语言的构建。本书适合广大移动开发者及入门学习者,尤其是紧跟主流趋势的前沿探索者。

Kotlin实战 目录

第1部分 Kotlin简介

1 Kotlin:定义和目的

1.1 Kotlin初体验

1.2 Kotlin的主要特征

1.2.1 目标平台:服务器端、Android及任何Java运行的地方

1.2.2 静态类型

1.2.3 函数式和面向对象

1.2.4 免费并开源

1.3 Kotlin应用

1.3.1 服务器端的Kotlin

1.3.2 Android上的Kotlin

1.4 Kotlin的设计哲学

1.4.1 务实

1.4.2 简洁

1.4.3 安全

1.4.4 互操作性

1.5 使用Kotlin工具

1.5.1 编译Kotlin代码

1.5.2 IntelliJ IDEA和Android Studio插件

1.5.3 交互式shell

1.5.4 Eclipse插件

1.5.5 在线playground

1.5.6 Java到Kotlin的转换器

1.6 小结

2 Kotlin基础

2.1 基本要素:函数和变量

2.1.1 Hello,world!

2.1.2 函数

2.1.3 变量

2.1.4 更简单的字符串格式化:字符串模板

2.2 类和属性

2.2.1 属性

2.2.2 自定义访问器

2.2.3 Kotlin源码布局:目录和包

2.3 表示和处理选择:枚举和“when”

2.3.1 声明枚举类

2.3.2 使用“when”处理枚举类

2.3.3 在“when”结构中使用任意对象

2.3.4 使用不带参数的“when”

2.3.5 智能转换:合并类型检查和转换

2.3.6 重构:用“when”代替“if”

2.3.7 代码块作为“if”和“when”的分支

2.4 迭代事物:“while”循环和“for”循环

2.4.1 “while”循环

2.4.2 迭代数字:区间和数列

2.4.3 迭代map

2.4.4 使用“in”检查集合和区间的成员

2.5 Kotlin中的异常

2.5.1 “try”“catch”和“finally”

2.5.2 “try”作为表达式

2.6 小结

3 函数的定义与调用

3.1 在Kotlin中创建集合

3.2 让函数更好调用

3.2.1 命名参数

3.2.2 默认参数值

3.2.3 消除静态工具类:顶层函数和属性

3.3 给别人的类添加方法:扩展函数和属性

3.3.1 导入和扩展函数

3.3.2 从Java中调用扩展函数

3.3.3 作为扩展函数的工具函数

3.3.4 不可重写的扩展函数

3.3.5 扩展属性

3.4 处理集合:可变参数、中缀调用和库的支持

3.4.1 扩展Java集合的API

3.4.2 可变参数:让函数支持任意数量的参数

3.4.3 键值对的处理:中缀调用和解构声明

3.5 字符串和正则表达式的处理

3.5.1 分割字符串

3.5.2 正则表达式和三重引号的字符串

3.5.3 多行三重引号的字符串

3.6 让你的代码更整洁:局部函数和扩展

3.7 小结

4 类、对象和接口

4.1 定义类继承结构

4.1.1 Kotlin中的接口

4.1.2 open、final和abstract修饰符:默认为final

4.1.3 可见性修饰符:默认为public

4.1.4 内部类和嵌套类:默认是嵌套类

4.1.5 密封类:定义受限的类继承结构

4.2 声明一个带非默认构造方法或属性的类

4.2.1 初始化类:主构造方法和初始化语句块

4.2.2 构造方法:用不同的方式来初始化父类

4.2.3 实现在接口中声明的属性

4.2.4 通过getter或setter访问支持字段

4.2.5 修改访问器的可见性

4.3 编译器生成的方法:数据类和类委托

4.3.1 通用对象方法

4.3.2 数据类:自动生成通用方法的实现

4.3.3 类委托:使用“by”关键字

4.4 “object”关键字:将声明一个类与创建一个实例结合起来

4.4.1 对象声明:创建单例易如反掌

4.4.2 伴生对象:工厂方法和静态成员的地盘

4.4.3 作为普通对象使用的伴生对象

4.4.4 对象表达式:改变写法的匿名内部类

4.5 小结

5 Lambda 编程

5.1 Lambda表达式和成员引用

5.1.1 Lambda简介:作为函数参数的代码块

5.1.2 Lambda和集合

5.1.3 Lambda表达式的语法

5.1.4 在作用域中访问变量

5.1.5 成员引用

5.2 集合的函数式API

5.2.1 基础:filter和map

5.2.2 “all”“any”“count”和“find”:对集合应用判断式

5.2.3 groupBy:把列表转换成分组的map

5.2.4 flatMap和flatten:处理嵌套集合中的元素

5.3 惰性集合操作:序列

5.3.1 执行序列操作:中间和末端操作

5.3.2 创建序列

5.4 使用Java函数式接口

5.4.1 把lambda当作参数传递给Java方法

5.4.2 SAM构造方法:显式地把lambda转换成函数式接口

5.5 带接收者的lambda:“with”与“apply”

5.5.1 “with”函数

5.5.2 “apply”函数

5.6 小结

6 Kotlin 的类型系统

6.1 可空性

6.1.1 可空类型

6.1.2 类型的含义

6.1.3 安全调用运算符:“?.”

6.1.4 Elvis运算符:“?:”

6.1.5 安全转换:“as?”

6.1.6 非空断言:“!!”

6.1.7 “let”函数

6.1.8 延迟初始化的属性

6.1.9 可空类性的扩展

6.1.10 类型参数的可空性

6.1.11 可空性和Java

6.2 基本数据类型和其他基本类型

6.2.1 基本数据类型:Int、Boolean及其他

6.2.2 可空的基本数据类型:Int?、Boolean?及其他

6.2.3 数字转换

6.2.4 “Any”和“Any?”:根类型

6.2.5 Unit类型:Kotlin的“void”

6.2.6 Nothing类型:“这个函数永不返回”

6.3 集合与数组

6.3.1 可空性和集合

6.3.2 只读集合与可变集合

6.3.3 Kotlin集合和Java

6.3.4 作为平台类型的集合

6.3.5 对象和基本数据类型的数组

6.4 小结

第2部分 拥抱Kotlin

7 运算符重载及其他约定

7.1 重载算术运算符

7.1.1 重载二元算术运算

7.1.2 重载复合赋值运算符

7.1.3 重载一元运算符

7.2 重载比较运算符

7.2.1 等号运算符:“equals”

7.2.2 排序运算符:compareTo

7.3 集合与区间的约定

7.3.1 通过下标来访问元素:“get”和“set”

7.3.2 “in”的约定

7.3.3 rangeTo的约定

7.3.4 在“for”循环中使用“iterator”的约定

7.4 解构声明和组件函数

7.4.1 解构声明和循环

7.5 重用属性访问的逻辑:委托属性

7.5.1 委托属性的基本操作

7.5.2 使用委托属性:惰性初始化和“by lazy()”

7.5.3 实现委托属性

7.5.4 委托属性的变换规则

7.5.5 在map中保存属性值

7.5.6 框架中的委托属性

7.6 小结

8 高阶函数:Lambda作为形参和返回值

8.1 声明高阶函数

8.1.1 函数类型

8.1.2 调用作为参数的函数

8.1.3 在Java中使用函数类

8.1.4 函数类型的参数默认值和null值

8.1.5 返回函数的函数

8.1.6 通过lambda去除重复代码

8.2 内联函数:消除lambda带来的运行时开销

8.2.1 内联函数如何运作

8.2.2 内联函数的限制

8.2.3 内联集合操作

8.2.4 决定何时将函数声明成内联

8.2.5 使用内联lambda管理资源

8.3 高阶函数中的控制流

8.3.1 lambda中的返回语句:从一个封闭的函数返回

8.3.2 从lambda返回:使用标签返回

8.3.3 匿名函数:默认使用局部返回

8.4 小结

9 泛型

9.1 泛型类型参数

9.1.1 泛型函数和属性

9.1.2 声明泛型类

9.1.3 类型参数约束

9.1.4 让类型形参非空

9.2 运行时的泛型:擦除和实化类型参数

9.2.1 运行时的泛型:类型检查和转换

9.2.2 声明带实化类型参数的函数

9.2.3 使用实化类型参数代替类引用

9.2.4 实化类型参数的限制

9.3 变型:泛型和子类型化

9.3.1 为什么存在变型:给函数传递实参

9.3.2 类、类型和子类型

9.3.3 协变:保留子类型化关系

9.3.4 逆变:反转子类型化关系

9.3.5 使用点变型:在类型出现的地方指定变型

9.3.6 星号投影:使用*代替类型参数

9.4 小结

10 注解与反射

10.1 声明并应用注解

10.1.1 应用注解

10.1.2 注解目标

10.1.3 使用注解定制JSON序列化

10.1.4 声明注解

10.1.5 元注解:控制如何处理一个注解

10.1.6 使用类做注解参数

10.1.7 使用泛型类做注解参数

10.2 反射:在运行时对Kotlin对象进行自省

10.2.1 Kotlin反射API:KClass、KCallable、KFunction和KProperty

10.2.2 用反射实现对象序列化

10.2.3 用注解定制序列化

10.2.4 JSON解析和对象反序列化

10.2.5 反序列化的最后一步:callBy()和使用反射创建对象

10.3 小结

11 DSL构建

11.1 从API到DSL

11.1.1 领域特定语言的概念

11.1.2 内部DSL

11.1.3 DSL的结构

11.1.4 使用内部DSL构建HTML

11.2 构建结构化的API:DSL中带接收者的lambda

11.2.1 带接收者的lambda和扩展函数类型

11.2.2 在HTML构建器中使用带接收者的lambda

11.2.3 Kotlin构建器:促成抽象和重用

11.3 使用“invoke”约定构建更灵活的代码块嵌套

11.3.1 “invoke”约定:像函数一样可以调用的对象

11.3.2 “invoke”约定和函数式类型

11.3.3 DSL中的“invoke”约定:在Gradle中声明依赖

11.4 实践中的Kotlin DSL

11.4.1 把中缀调用链接起来:测试框架中的“should”

11.4.2 在基本数据类型上定义扩展:处理日期

11.4.3 成员扩展函数:为SQL设计的内部DSL

11.4.4 Anko:动态创建Android UI

11.5 小结

A 构建Kotlin项目

B Kotlin代码的文档化

C Kotlin生态系统

图书网:Kotlin实战pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

程序设计

重构 改善既有代码的设计(中文版)pdf

《重构:改善既有代码的设计》(中文版)所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口...
程序设计

数据结构 C语言版 第2版pdf

适读人群 :普通高校电子信息大类本科生学习、考研,同时也适合零售和培训。 采用“案例驱动”的编写模式。书中结合实际应用,将各章按照“案例引入——数据结构及其操作——案例分析与实现”...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • lstrong
      lstrong 0

      学到了活到老,学无止境啊