当前位置:K88软件开发文章中心编程资讯编程资讯23 → 文章内容

31 天,从浅到深轻松学习 Kotlin

减小字体 增大字体 作者:华军  来源:华军资讯  发布时间:2019-2-18 23:55:55

原标题:31 天,从浅到深轻松学习 Kotlin这篇文章介绍开发者用 31 天学习 Kotlin 的心得,深入浅出地介绍了 Kotlin 的一些基本特性以及高级用法,对处于不同阶段的 Kotlin 开发者来说,在提高开发效率和了解 Kotlin 提供一些参考,希望可以对大家有所帮助。第一周Day 1:可见性在 Kotlin 中一切都是默认 public 的。并且 Kotlin 还有一套丰富的可见性修饰符,例如:private, protected, internal。它们每个都以不同的方式降低了可见性。Day 2:Elvis 操作符需要处理代码中的空值?可以使用 elvis 操作符,避免您的 “空情况” (null-erplate)。这只是替换空作为值或者返回事件情况的一个小语法。Day 3:String 模板格式化字符串?将 $ 放在变量名的前面去表达字符串中的变量和表达式。使用 $ {expression} 求表达式的值。Day 4:When 表达式强大的 switch!Kotlin 的 When 表达几乎可以匹配任何东西。字面值,枚举,数字范围。您甚至可以调用任意函数!Day 5:循环,范围表达式与解构for 循环在与其他两种 Kotlin 特性一起使用时可以获得超级能力:范围表达式和解构。Day 6:属性在 Kotlin 中,类可以具有可变和只读属性,默认情况下生成 getter 和 setter。如果需要,您也可以实现自定义的。Day 7:解构声明Android KTX 使用解构来分配颜色的组件值。您可以在您的类中使用解构,或者扩展现有的类来添加解构。第一周学习小结:本周以基本知识为主:处理空错误,简化循环和条件,属性,解构架。下一周我们将会深入探索 Kotlin 的更多功能。第二周Day 8:简单的 bundle准备去通过简洁的方式去创建 bundle,不调用 putString,putInt,或它们的 20 个方法中的任何一个。一个调用让您生成一个新的 bundle,它甚至可以处理 Arrays。Day 9:Parcelize喜欢 Parcelable 的速度,但不喜欢写所有的代码?和 @Parcelize 打个招呼。Day 10:Data 类和 equality可以创建具有一个具有处理数据的类吗?将它们标记为 "Data" 类。并默认实现生成 equals() 方法 - 相当于 hashCode(),toString() 和copy(),并检查结构是否相等。Day 11:简化 postDelayLambda 非常贴心,使用最后一个参数调用语法您可以取消回调,Callable 和 Runnable,例如Android KTX 贴心的用一个小包装来处理 postDelayed。Day 12:默认参数方法参数的数量是否太多?在函数中指定默认参数值。使用命名参数使代码更具可读性。Day 13:从 Java 编程语言调用 Kotlin在同一个项目中使用 Kotlin 和 Java?您有没有顶级功能或属性的课程?默认情况下,编译器将生成类名称 YourFileKt。通过使用 @file:JvmName 注释文件来更改它。Day 14:在没有迭代器的情况下迭代类型迭代器用在了有趣的地方!Android KTX 将迭代器添加到 viewGroup 和 sparseArray。要定义迭代器扩展请使用 operator 关键字。 Foreach 循环将使用扩展名!第二周学习小结:这周我们更深入学了 Kotlin 的特性:简洁 bundle,迭代,Data,postDelay,默认参数,序列化。下一周我们会了解更多的 Kotlin 特性并且开始探索 Android KTX。第三周Day 15:sealed 类Kotlin 的 sealed 类可以让您轻松的处理错误数据,当结合 LiveData 您可以用一个 LiveData 同时代表成功和失败的路径,这比用两个不变量要好。您也可以将 sealed 类用在 RecyclerView 的 adapter 中,非常适合于 ViewHolders —— 用一组干净的类型明确地分派给每个持有者。用作表达式时,如果有类型不匹配,编译器将会出错。使用 RecyclerViews,如果我们有很多来自 RecyclerView 中 item 的回调,比如一个点击,分享和删除 item 的项目,我们可以使用 sealed 类。一个回调可以处理所有的事情!Day 16:懒加载懒加载是个好东西!通过使用懒加载,可以省去昂贵的属性初始化的成本直到它们真正需要。计算值然后保存并为了未来的任何时候的调用。Day 17:LateinitAndroid 中,在 onCreate 或者其它的回调初始化对象,但在 Kotlin 中不为空的对象必须初始化。那么怎么办呢?可以输入 lateinit。来承诺最终将会初始化。Day 18:要求 (require) 和检查 (check)您方法的参数是有效的吗?用 require 在使用前可以检查它们,如果它们是无效的将会抛出IllegalArgumentException。您的封闭类的状态是否正确?可以使用 check 来验证。如果检查的值为 false,它将抛出 IllegalStateException。Day 19:内联 (InLine)等不及要使用 lambdas 来生成一个新的接口?kotlin 可以使您制定一个 inline 的方法 -- 这意味着调用将替换方法体,用很非常简单的方法来生成 lambda 的接口。Day 20:运算符重载用操作符重载快更快速写 Kotlin。像 Path,Range或 SpannableStrings 这样的对象允许像加法或减法这样的操作。通过 Kotlin,您可以实现自己的操作符。Day 21:顶级方法和参数类的实用方法?将它们添加到源文件的顶层。在 Java 中,它们被编译为该类的静态方法。您是否为您的类定义了静态常量?使它们成为顶级属性。它们将被编译为字段和静态访问器。第三周学习小结:本周主要讨论一些基本的 Kotlin 特性,如运算符重载,内联,运算符重载,懒加载,以及非常强大的 inLine,并展示了使用 Android KTX 处理内容值,捆绑包和回调时如何编写更简洁的代码。第四周Day 22:简单的内容值将 ContentValues 的强大功能与 Kotlin 的简洁性相结合。使用 Android KTX 只传递一个 Pair 创建 ContentValues。Day 23:DSLs特定于域的语言可以通过使用类型安全的构建器来完成。它们为简化 API 做出贡献;您也可以自己借助扩展 lambdas 和类型安全构建器等功能构建它们。Spek 是一个构建为 Kotlin DSL 的测试库。 Spek 不使用 @Annotations,而是提供了一种不依赖于反射的类型安全的方式来声明测试代码。Android 上 Kotlin 的另一个 DSL 是 Anko。Anko 允许您使用声明性代码构建 Android 视图。Day 24:具体化具体化的概念例子:Android KTX 中的 Context.systemService() 使用泛化来通过泛型传递 “真实” 类型。没有通过 getSystemService。Android KTX:Context.systemService()Day 25:Delegates通过 by 用您的工作委托给另一个类。通过类继承,并将属性访问器逻辑与委托者属性重用。Day 26:延期方法没有更多的 Ut

[1] [2]  下一页


31 天,从浅到深轻松学习 Kotlin