首页>参考读物>计算机科学与技术>软件与程序设计

Kotlin编程实践
作者 : [美]肯·寇森(Ken Kousen) 著
译者 : 乔禹昂 译
出版日期 : 2020-07-10
ISBN : 978-7-111-65962-4
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 233
开本 : 16
原书名 : Kotlin Cookbook: A Problem-Focused Approach
原出版社: O'Reilly Media, Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书的重点不仅在于讲解 Kotlin 的语法与语义,还将展示何时以及为何应该使用某个指定的语言特性。本书的目标不一定会涵盖每一个 Kotlin 语法与库的细节。但在最后,本书添加了很多基本原理的内容,让即使只有 Kotlin 初级知识的读者也可以理解本书的内容。当你认真学习 Kotlin 的细节后,你就可以使用这门受欢迎的语言构建 Android 应用、Web 应用以及其他程序。Kotlin 不仅可以用于任何应用 Java 的地方,还可以用于 iOS 开发、编写原生应用程序、JavaScript 开发以及更多场景。

图书特色

图书前言

欢迎来到Kotlin的世界!本书的重点不仅在于讲解Kotlin的语法与语义,还将向你展示何时以及为何应该使用某个特定的语言特性。本书不会涵盖每一个Kotlin语法与库的细节,但在最后添加了很多基本原理的“食谱”,让即使只有Kotlin初级知识的读者也可以理解本书的内容。
JetBrains大力鼓励Kotlin社区拥抱多平台(Multiplatform)、原生(Native)以及JavaScript开发的发展。由于它们还处于测试阶段且使用率很低,所以最后还是决定不在本书中介绍它们。因此,本书只专注于运行在JVM上的Kotlin。
存放本书所有相关代码的Github仓库位于https://github.com/kousen/kotlin-cookbook。它包含一个Gradle包装器(当然,构建文件是用Kotlin DSL编写的)并且通过了所有的测试。
本书中所有的代码示例均已通过两种长期支持的可用Java版本进行了编译与测试,即Java 8与Java 11。尽管Java 8在技术上已超过其生命周期的最后期限,但它在业界依然被普遍使用,代码示例确保可以在其上运行。在本书写作过程中,Kotlin的版本是1.3.50,而当前版本则是1.3.60译注1。所有的代码都可以在这两个版本上运行,并且Github仓库将经常更新以使用最新版的Kotlin。
本书目标读者
本书面向已经了解面向对象编程基础的开发者,特别是了解Java以及其他基于JVM的语言的读者。拥有Java知识将会有所帮助,但这不是必需的。
本书更侧重于Kotlin的使用技巧与习惯用法,而不是成为这门语言的详尽资源。其优点在于在任何给定的示例中可以发挥这门语言的所有潜力,但缺点在于对这些特性的基础部分介绍有限。本书每一章都包含了该章相关基础技术的简介,所以如果你只是模糊地知道如何创建集合、使用数组,或设计类,那么已经相当不错了。在线参考手册(https://kotlinlang.org/docs/reference)对Kotlin进行了详尽的介绍,所以本书经常引用其中的示例与讨论。
此外本书还经常介绍Kotlin库函数的实现。这是为了展示这门语言的开发者如何在实践中使用它们,并讨论这些函数的设计方式。如果你很着急,无须预先了解实现,可以跳过这些细节。
本书主要内容
本书分为13章,每一章都是独立的,但本书引用了许多其他资料。你可以按任意喜欢的顺序阅读本书。
第1章讲解了安装并运行Kotlin的基本过程,包括使用REPL,使用诸如Maven以及Gradle等构建工具,以及在Graal中使用原生镜像生成器。
第2章讲解了Kotlin的基本特性—例如可空类型、操作符重载以及类型转换,然后介绍了一些更深奥的问题,包括按位移位操作符或者在Pair类上编写扩展函数等。
第3章重点介绍了Kotlin的面向对象特性,而该部分内容可能会让其他语言的开发者对此感到惊讶或不明所以。它包含如何使用const关键字、Kotlin如何处理幕后属性、延迟初始化以及令人恐惧的Nothing类,这些内容一定会令现有的Java开发者感到困惑。
第4章只有很少的一部分内容,其中涵盖一些需要被解释说明的函数式特性。函数式编程概念会始终贯穿全书,特别是当我们谈论集合、序列以及协程时,但该章中包含的一些有用的技巧可能会让你感觉到不同寻常或非常有趣。
第5章介绍了数组与集合,主要介绍一些不那么为人所知的方法,例如集合解构、按多个属性排序、在集合上构建窗口,以及创建数列。
第6章展示了Kotlin如何惰性处理序列中的元素,类似于在Java中使用流的方式,内容包含生成序列、在序列中生产元素以及使用无限序列。
第7章涵盖了Kotlin独有的另一个主题:在对象的上下文中执行代码块的函数。诸如let、apply以及also这类函数在Kotlin中非常有用,该章会说明为什么以及如何使用它们。
第8章讨论了Kotlin中的一个便捷特性:如何实现委托。委托可以让你使用组合而不是继承,Kotlin的标准库包含了一系列的委托,例如lazy、observable以及vetoable。
第9章涵盖了有关测试的重要主题,将会重点关注JUnit5。在当前版本下,JUnit已经被设计为可以与Kotlin良好地配合使用,其中包括常规用法以及在Spring框架应用程序中使用。该章会讨论使编写与执行测试更加容易的几种方式。
第10章涵盖了一些专门用于资源管理的方法,包括文件I/O,以及在多种情况下具有广泛适用性的use函数。
第11章介绍了其他类别的书中不容易找到的主题。诸如如何获取当前Kotlin版本,如何强制when语句在即使没有返回值的时候也要覆盖所有情况,以及如何在正则表达式中使用replace函数。此外,也讨论了TODO函数和Random类,以及如何与Java异常处理集成。
第12章涉及对Kotlin非常友好的Spring框架与Spring Boot,少量内容展示了如何将Kotlin类作为托管的bean、如何实现JPA持久性,以及如何在需要的时候进行依赖注入。
第13章介绍协程。协程是Kotlin中最受欢迎的功能之一,也是这门语言并发与并行编程的基础,内容包含基础知识,例如构建器与调度器、如何取消与调试协程,以及如何在自定义的Java线程池中运行它们。
这13章的内容不需要按特定顺序阅读。它们相辅相成,你可以从任何地方开始阅读。章节分组提供了一种将相似内容放在一起的方式,但是我们还是希望你可以在各章节之间自由跳跃从而解决你当前可能遇到的任何问题。
给Android开发者的特别建议:Kotlin目前是Android开发的首选语言,但它是一种更广泛的通用语言。你可以在任何原先使用Java的地方以及其他更多场景中使用它。本书没有专门针对Android的章节,相反,将全面讨论Kotlin在Android中的应用。一些与Android有关的特定内容(例如协程的取消),利用了Android库广泛使用Kotlin的事实,但一般来说,本书涵盖的语言特性可以在任何地方使用。本书希望以一种更通用的方式覆盖这门语言,使Android开发者能学到在开发任何项目时都有用的技巧。
排版约定
本书中使用以下排版约定:
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字等。
等宽粗体(Constant width bold)
表示应由用户直接输入的命令或其他文本。
等宽斜体(Constant width italic)
表示应由用户提供的值或由上下文确定的值替换的文本。
该图示表示提示或建议。
该图示表示一般性说明。
该图示表示警告或注意。
示例代码
可以从https://github.com/kousen/kotlin-cookbook下载补充材料(示例代码、练习等)。
这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O扲eilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O扲eilly的配套CD-ROM则需要O'Reilly出版社的许可。引用本书的示例代码来回答问题也不需要许可,将本书中的示例代码的很大一部分放到自己的产品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)你注明出处。注明出处的形式包含标题、作者、出版社和ISBN,例如:
Kotlin Cookbook,作者Ken Kousen,由O扲eilly出版,书号978-1-492-04667-7
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permission@oreilly.com联系我们。
O'Reilly在线学习(O扲eilly Online Learning)
近40年来,O扲eilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O扲eilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O扲eilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O'Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至bookquestions@oreilly.com。
本书配套网站https://oreil.ly/kotlin-cookbook上列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://www.oreilly.com。
我们在Facebook上的地址:http://facebook.com/oreilly
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://www.youtube.com/oreillymedia
致谢
Google在2017年的I/O大会上宣布Kotlin将会成为Android开发的首选语言。2018年,Gradle公司(Gradle构建工具背后的公司)宣布将支持Kotlin成为Gradle构建脚本的领域特定语言(DSL)。这两方面的进展都促使我深入学习这门语言,并且我很高兴能做到这一点。
在过去的几年中,我一直定期参加有关Kotlin的演示与研讨会。尽管这门语言的基础知识易于学习和应用,但我对它的深度以及它对其他语言(例如Groovy或Scala)实现现代开发思想的方式的认知印象深刻。Kotlin是整个行业中许多最佳编程思想的综合,我通过进行必要的深入研究而编写了本书,从而学到了很多知识。
在我的学习过程中,与许多活跃的Kotlin开发者合作使我受益匪浅,包括Dawn Griffiths与Dave Griffiths,他们所著的Head First Android Development与Head First Kotlin都是非常出色的书,他们甚至同意为本书撰写序言。Hadi Harriri(JetBrains 的开发者布道师)定期会做Kotlin相关的演讲,他的这些演讲总是激励我花时间学习这门语言,并且他很友好地对本书进行了技术审阅。非常感谢他们。
Bill Fly也提供了技术审阅。我在O扲eilly学习平台上与他互动的次数超出了我的预期,而且他总是提出有趣的见解(以及棘手的问题)。我的好朋友Jim Harmon多年前就帮助我快速掌握了Android开发,且一直乐于回答我的问题,并与我讨论如何在实践中使用Kotlin。Mark Maynard是一位活跃的行业开发者,他帮助我了解了Kotlin如何使用Spring框架,对此我深表感谢。最后,无人能比的Venkat Subramaniam非常友善,可以从忙碌的日程中抽出时间来编写Kotlin书Programming Kotlin,这本书与他所写的其他书籍一样棒,让我受益匪浅。我很高兴认识我所有的技术审阅人员,并对他们花费在本书上的大量时间和精力表达谢意。
我要感谢NFJS巡回宣讲会中的许多演讲者,包括Nate Schutta、Micheal Carducci、Matt Stine、Brian Sletten、Mark Richards、Pratik Patel、Neal Ford、Craig Walls、Raju Gandhi、Jonathan Johnson以及Dan“the Man”Hinojosa,他们的始终如一一直鼓励着我。
好吧,我承认。写作和教学培训课(我的日常工作)是一种孤独的追求。有我可以依靠的社区朋友以及同事提供的见解、建议以及各种娱乐活动,真是太好了。
O'Reilly Media的许多人都参与了这本书的创作。在这里我没有一一提起他们,但我要特别提到Zan McQuade,由于我不定期的日程安排和我逆反的天性,让他经常处于尴尬的境地。感谢他的耐心、理解与辛勤工作,使本书更加完整。
最后,我需要向妻子Ginger还有儿子Xander表达我的全部爱意。没有家人的支持与关心,我就不会成为今天的我,这一事实在过去的几年对我来说越来越明显。我永远无法报答你们对我的爱。

专家评论

Kotlin是2011年由JetBrains推出的新一代编程语言。最初基于JVM,如今已向Native、JavaScript、数据科学等多个领域迈进。根据2020年2月JVM Ecosystem的数据,在JVM上Kotlin的份额已经仅次于Java,位居第二。2017年Google官方宣布Kotlin为Android的首选开发语言后,Kotlin的发展势头更为迅速,已成为编程语言界的又一颗新星,在业界得到了广泛的关注。
携程研发部门自2017年以后,对基于Kotlin的技术进行了卓有成效的探索与尝试,将Kotlin成功地应用在机票等产品的开发中,有效地提高了开发人员的效率。为了帮助更多的程序员尽快了解Kotlin,机票研发部Android开发组高级工程师乔禹昂利用工作之外的时间翻译了这本书。全书通俗易懂,用大量简单的示例程序清晰地解释了Kotlin的语法、数据结构、函数式编程等主要特性,是对Kotlin初学者非常有帮助的一本工具书。
希望这本书的推出能进一步推进Kotlin技术在国内的应用!
—携程旅行网 机票事业部CTO谭煜东

在快速变化的移动互联网时代,软件开发工作者面临的最大挑战是如何提供高效的开发能力以应对产品快速试错、迭代产生的大量开发工作,因此选择一门高效的开发语言就变得尤为重要。Kotlin作为一款现代多平台应用的静态编程语言,有着简洁、高效、迁移成本低等优点,值得我们技术研发人员关注和学习。本书有关Spring和测试的内容,值得推荐。
—携程旅行网 机票研发部 高级研发总监 向阳

Kotlin诞生于2010年,开源于2012年,吸收了Java等语言的优良特性,提供了令人惊艳的编程体验,是编程语言界名副其实的“后浪”。译者乔禹昂是一位对Kotlin语言有着极大热情和信仰,并在工作中持续地躬行实践的95后程序员,标准的“后浪”技术人员。相信这本双重“后浪”之作可以给读者带来崭新的学习体验。
—携程旅行网 机票研发部 研发总监 陈琦

本书译者也是Kotlin中文站的一位译者,译文精益求精,质量一流。本书内容较新,涵盖了JVM平台Kotlin编程的方方面面,不仅有面向对象与函数式编程、协程与结构化并发,甚至还有测试以及编写Spring应用程序的内容。对于想系统化学习Kotlin的读者,本书是不二之选。
—Kotlin中文站负责人,贾彦伟

Kotlin的版本迭代非常迅速,相关的书籍、文章和教程很容易就会被打上“过时”的标记。本书基于Kotlin持续时间最长、语法特性非常成熟的1.3版本编写,除了版本够新之外,内容的组织方式也非常讲究,采用了抛出问题、回答问题的方式,既适合新手入门通读,也适合老手作为资料重点翻阅。相比之下,本书对初学者更为友好,负责翻译本书的禹昂更是Kotlin中文官网的主要翻译贡献者之一,所有的概念和术语都完全依照中文官网的翻译标准进行推敲,相信大家的阅读体验会如同查阅中文官网一般。
—腾讯地图数据采集团队移动客户端负责人,Kotlin布道师,
《深入理解Kotlin协程》作者,霍丙乾

上架指导

计算机\程序设计

封底文字

认真学习 Kotlin 的细节后,你就可以使用这门受欢迎的语言构建 Android 应用、Web 应用以及其他程序。通过学习本书,开发者们将学习到如何在自己的项目中使用这门基于Java的语言。无论你是经验丰富的编程人员还是学习 Kotlin 的新人,都将获益良多。
作者 Ken Kousen(也是Modern Java Recipes一书的作者)将教授你如何专注于使用自己的 Kotlin 方案来解决问题而不是陷于基础语法之中。针对常见问题,本书将给出具体解决方案。Kotlin 在 Android 开发上已经大规模使用,但实际上 Kotlin 不仅可以用于任何应用 Java 的地方,还可以用于 iOS 开发、编写原生应用程序、JavaScript 开发以及更多场景。立即投入 Kotlin 的学习并开始创建新项目吧!
通过本书,你将:
? 掌握函数式编程概念,包括 lambda 表达式、序列和并发。
? 学习如何使用委托、延迟初始化和作用域函数。
? 学习 Kotlin 与 Java 互操作的能力并使用 Kotlin 访问 Java 库。
? 能够编写扩展函数。
? 能够使用诸如 JUnit5 之类的实用库。
? 在特定的开发框架(例如 Android 和 Spring)内获得实践经验。
“ 本书是开发者可以快速入门 Kotlin 的超棒资源,为常见的开发任务提供了简明实用的指南,同时指出了从Java过渡到Kotlin面临的困难。”
——Mark Maynard
资深开发者
Ken Kousen是Java Champion、Oracle Groundbreaker Ambassador与JavaOne Rock Star三个奖项的获得者。他著有
Gradle Recipes for Android(O’Reilly)、
Modern Java Groovy(Manning)以及
Modern Java Recipes(O’Reilly)等书,
并在O’Reilly发布过Android、Groovy、
Gradle、Java进阶以及Spring相关的视频课程。Ken在他自己的公司 Kousen IT开发软件并教授软件开发课程。他同时也是JetBrains官方认证的Kotlin培训合作伙伴。

图书序言

每隔几年,就会出现一种革命性的新语言,它们常常扬言要改变人们编写软件的方式。但现实却常常辜负它们。而Kotlin则与它们有所不同。将时光回退到2011年,Kotlin开始缓慢地、几乎不可察觉地悄悄进入世界各地的代码库。那些长期使用Java并且发现了它的缺点的人们开始到处学习Kotlin。正因如此,他们缩短了代码的长度却增强了代码的功能。
Kotlin作为Android开发的首选语言而闻名,而如今Kotlin已经足够成熟,所以迫切需要一本像本书这样的书。本书从头开始讲解了许多有用的技巧。作者将向你展示如何安装Kotlin以及为你的项目配置它。他也会向你展示如何在Java环境、浏览器中或作为一个独立的应用程序来运行Kotlin。但本书会快速推进内容,解决世界各地的开发者与架构师所面临的日常编程问题。
尽管有一小节是专门讲解Kotlin测试的,但你会发现本书本身就是测试驱动的。它将测试作为如何使用这门语言的实际示例。通过测试,你可以更精确地调整方案以适应你的需求。
本书将带给你直接而实用的帮助,可以指导你在Kotlin旅途中快速进步。本书是Kotlin必不可少的操作指南,每个开发者都应将其保存在桌面(真实或虚拟)上,以支持日常工作。

Dawn Griffiths与David Griffiths
Head First Kotlin的作者
2019年10月6日

译者序

尽管Google在2017年的I/O大会上就宣布Kotlin为Android开发的首选语言,但在2019年的I/O大会被再次提及之前,Kotlin在国内的推行都并不顺利,常常有人问为什么一定要用Kotlin,为什么要学习Kotlin。我也常常能听到一些老生常谈的回答:空安全,代码简洁,新增了函数式的语法,等等。但是今天我想从另一个角度来谈谈这个问题。
如果你和几年前的我一样,是一个“保守”的Android开发者,那你对技术的理解可能会被局限在这个单一的技术栈中。例如,你也许认为编程范式只有面向过程和面向对象两种,而面向对象是最好的编程范式;你对异步并发模型的理解也可能仅限于Java上的线程抢占式调度,而对其他调度方式未有所闻;你也许对JVM相关的各种原理非常熟悉,但对一些直接编译为操作系统二进制码的语言不甚了解,甚至有所抗拒。
但Kotlin是一个引子,在Kotlin中你将学到初等的函数式编程,可能会因此了解Haskell、Lisp等正宗的函数式编程语言,而这是一个近乎与命令式编程相对的平行世界;在学习Kotlin协程的过程中,你会发现除了抢占式调度,还有协同式调度,这是一种更安全的实现异步与并发的方式;当学习到一定阶段后,你也许会尝试Kotlin/Native,从而了解原生二进制程序是如何工作的。当然,Kotlin Multiplatform也许会帮助你触及iOS开发,而Kotlin/JS也许会带你走入前端的大门。
在我看来,Kotlin是Java技术栈通向更广阔的编程世界的万向门,在你通向这些曾经所不了解的技术领域的初期,你不必精通多种语言,只需要使用Kotlin足矣。当然了,本书并不包含范围如此之广的内容,它将带你迈出走进Kotlin世界的第一步,使用Kotlin编写的程序仍然运行在你熟悉的JVM中。虽然近几年的Kotlin书籍有很多,但其中一些经典Kotlin书籍已经略显老态(其中部分创作于Kotlin 1.0时代,而现在Kotlin 1.4已经呼之欲出),因此它们可能没有介绍诸如协程之类的新内容。但本书原作是在2019年年底才创作完成,很好地填补了这个空白。
在本书的翻译过程中,公司的部门总监陈琦给予了我很多帮助,是他的推动才让我有更多的业务场景实践Kotlin,他作为业内资深人士时常与我畅谈技术本身,每次都令我受益匪浅。本书术语的翻译均来自Kotlin中文社区的术语表—https://github.com/hltj/kotlin-web-site-cn/issues/35#issuecomment-437292239,这是Kotlin中文社区的伙伴们在翻译官方文档等资料过程中积累的结晶,很多术语的翻译都经过了大家反复的讨论。对于社区中的伙伴,我很感谢站长贾彦伟(灰蓝天际)大哥,他的技术深度与广度都令人叹服,是上面提到的术语表最初的修订者与发起者。还有霍丙乾(bennyhuo),他也具有同样高超的技术水平,对于任何新技术,他总是比其他人都要敏锐,他也是中文社区最初的组织者。除此之外也同样感谢高金龙等伙伴们的探讨与帮助。最后还要感谢一下公司整个团队对我的支持。
我期待着Kotlin能走得更远,也希望本书能被国内的读者所喜爱。如果你在阅读的过程中发现翻译方面的问题,还望不吝赐教。

乔禹昂
2020年4月20日

图书目录

序言 1
前言 3
第1章 安装并运行Kotlin 11
1.1 在没有本地编译器的情况下运行Kotlin 11
1.2 在本地安装Kotlin 13
1.3 在命令行中编译并运行Kotlin 15
1.4 使用Kotlin REPL 16
1.5 执行Kotlin脚本 17
1.6 使用GraalVM构建独立应用程序 18
1.7 为Gradle添加Kotlin插件(Groovy语法) 21
1.8 为Gradle添加Kotlin插件(Kotlin语法) 24
1.9 使用Gradle构建Kotlin工程 26
1.10 使用Maven编译Kotlin 27
第2章 Kotlin基础 31
2.1 在Kotlin中使用可空类型 31
2.2 在Java中添加可空指示器 34
2.3 为Java添加重载方法 36
2.4 显式类型转换 40
2.5 打印不同的进制 42
2.6 数幂 44
2.7 使用移位运算符 46
2.8 使用位布尔运算符 49
2.9 使用to函数创建Pair实例 52
第3章 Kotlin中的面向对象编程 55
3.1 理解const与val的不同之处 55
3.2 创建自定义的getter与setter 56
3.3 定义数据类 59
3.4 幕后属性技术 62
3.5 操作符重载 65
3.6 使用lateinit进行延迟初始化 67
3.7 使用安全转换函数、恒等操作符,以及Elvis操作符覆盖equals函数 70
3.8 创建单例 72
3.9 无事生非 75
第4章 函数式编程 79
4.1 在算法中使用fold 79
4.2 使用reduce函数进行归约 82
4.3 使用尾递归 84
第5章 集合 89
5.1 使用数组 89
5.2 创建集合 92
5.3 为已存在的集合创建只读视图 94
5.4 从集合构建map 96
5.5 当集合为空的时候返回默认值 97
5.6 将变量限制在给定区间 98
5.7 处理集合中的窗口 100
5.8 解构list 102
5.9 将多个属性排序 103
5.10 自定义迭代器 105
5.11 根据类型过滤集合 107
5.12 在数列中创建区间 108
第6章 序列 113
6.1 使用懒序列 113
6.2 生成序列 115
6.3 管理无限序列 117
6.4 以固定间隔从序列生成元素 119
第7章 作用域函数 123
7.1 使用apply函数在构造结束之后初始化对象 123
7.2 使用also函数进行其他操作 124
7.3 使用let函数与Elvis 126
7.4 使用let函数代替临时变量 128
第8章 Kotlin委托 131
8.1 使用委托实现组合 131
8.2 使用lazy委托 134
8.3 确保值不为空 136
8.4 使用observable与vetoable委托 137
8.5 使用映射作为委托 141
8.6 创建你自己的委托 143
第9章 测试 147
9.1 设置测试类的生命周期 147
9.2 使用数据类进行测试 152
9.3 使用帮助函数并使用默认参数 154
9.4 使用不同的参数重复JUnit 5的测试 156
9.5 使用数据类进行参数化测试 159
第10章 输入/输出 161
10.1 使用use函数管理资源 161
10.2 写文件 164
第11章 其他 167
11.1 在代码中获取Kotlin版本号 167
11.2 重复执行lambda表达式 169
11.3 强制when语句进行穷举 170
11.4 在正则表达式中使用replace函数 172
11.5 转换为二进制字符串并返回 174
11.6 使一个类可执行 176
11.7 测量经过时间 179
11.8 启动线程 180
11.9 使用TODO强制完成 183
11.10 理解Random的随机行为 185
11.11 在函数命名中使用特殊字符 187
11.12 告知Java处理异常 188
第12章 Spring框架 191
12.1 开放用于继承的Spring管理的bean类 191
12.2 持久化Kotlin数据类 194
12.3 依赖注入 196
第13章 协程与结构化并发 201
13.1 选择协程构建器 201
13.2 使用withContext替换async/await 207
13.3 使用协程调度器 208
13.4 在Java线程池上运行协程 210
13.5 取消协程 213
13.6 协程调试 216

教学资源推荐
作者: [丹]弗莱明·尼尔森(Flemming Nielson),[丹]汉内·里斯·尼尔森(Hanne Riis Nielson),[英]克里斯·汉金(Chris Hankin) 著
作者: (美)Richard C.Detmer
作者: 刘燕君,刘振安,孙忱
作者: [美]罗伯特·哈珀(Robert Harper) 著
参考读物推荐