Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【用 Kotlin 写 Android】Kotlin Koans 深入分析讲解(下) #31

Open
renyuzhuo opened this issue Apr 12, 2018 · 0 comments
Open
Assignees
Labels
Blog TextBlog 微信小程序 Blog

Comments

@renyuzhuo
Copy link
Owner

上一篇文章我们介绍了集合类的使用,都是一些方法,这一章包括了前面学习到的东西的一些使用和一些其他琐碎的知识点,我们一个一个看。

Task 28:Compound tasks

Compound tasks

本题目是前面学到的那些东西的一个汇总使用:

答案

Task 29:Get used to new style

Get used to new style

对照 Java 代码改写:

答案

Task 30:Properties

30:Properties

属性赋值:

答案

Task 31:Lazy property

Lazy property

只可以赋值一次的属性,一定有标记或变量判断,如果赋值过就不赋值,否则就赋值:

答案

Task 32:Delegates example

Delegates example

Lazy 的委托属性 Delegates,主要是通过委托模式,减少样板代码,还可以实现继承一样的效果。这一个问题比较复杂,我们以后专题分析。

答案

Task 33:Delegates

Delegates

委托,我们还是放到后面介绍,这里只要知道有这么一个概念就好了。

答案

Task 34:Extension function literals

Extension function literals

直接对字面值进行扩展,这是一个很方便的特性,可以让代码简单易懂。

答案

Task 35:String and map builders

String and map builders

扩展函数字面值可以很有效的用于建造者模式:

答案

其实我们这里还可以写成泛型:

答案 2

Task 36:The function apply

The function apply

简化写法:

答案

Task 37:Html builder

Html builder

虽然我们是用 Kotlin 写 Android,但是这个联系中最后还是出了一个创建 Html 的小练习题,我们不妨看一下 Kotlin 定义函数,定义操作符,处理数据的能力,确实是很强大!Java 需要小心了!

答案

Task 38:Builders: how it works

我们简单看一下就好了,分析起来篇幅较长,且对于写 Android 用处有限,暂时不做具体分析,在高级应用中在介绍。

答案

Task 39:Generic functions

Generic functions

泛型函数在标准库中有大量使用,可以极大减少代码量并提供强大功能,在开发一些 SDK 时,比较适用。但是想写好,也是比较困难,需要代码有良好的设计和良好的代码思维。

答案

小结

到这里我们就分析完了 Kotlin Koans 的每个小题,在开始阶段和集合相关内容上,介绍的更详细具体,在后面一些高级使用或不常用并没有用大量篇幅去介绍。这也考虑到现阶段详细介绍,可能不是很好看懂,也用处不大。到这里,我们其实还没有真正开始【用 Kotlin 写 Android】,但有了这些基础,对我们理解代码和写出更简单高效的代码是极有好处的。在后面的文章中,用多个项目将 Android 开发的知识点组织起来,也介绍一些用 Kotlin 写 Android 可能遇见的问题。


如果有一天你觉得过的舒服了,你就要小心了!欢迎关注我的公众号:我是任玉琢

qrcode_for_gh_45402a07f7d9_258

@RWebRTC RWebRTC added the Blog label Apr 12, 2018
@renyuzhuo renyuzhuo added the TextBlog 微信小程序 Blog label Aug 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Blog TextBlog 微信小程序 Blog
Projects
None yet
Development

No branches or pull requests

2 participants