
如果使用lambda作为参数,则尽量在方法声明时使用内联关键字 inLine 这样会减少损耗。、
注意:lambda 表达式的 最后一行代码是 表达式的返回值

将方法作为参数方法的实现传递使用
methodResponseResult方法 添加 :: 之后 methodResponseResult会变成函数类型的对象。 便可以作为responseResult 参数的实现传入。

函数返回函数

匿名函数与具名函数

let函数 函数内部是it 引用, 函数返回值为代码最后一行。 函数可以使用具名函数 前面加:: 即可

let函数返回 代码的最后一行
let 和 apply的区别

!! 的使用 意思为不管会不会空 都执行 kotlin 中叫做断言

空合并操作符 ?: 的使用

apply函数的使用 函数内部是 this引用 apply函数返回值为调用者本身,函数可以使用具名函数 前面加:: 即可

run 函数使用 run函数内部是 this 引用, 返回值为 内部代码最后一行,函数可以使用具名函数 前面加:: 即可

with 函数的使用 函数是传入参数 不可以链式调用,内部持有引用为this 返回值为代码最后一行

also 函数的使用 函数内部持有的是it 关键字引用 返回值为调用者本身。

takeIf 函数的使用 内部持有关键字 it 引用

空合并操作符 ?:

takeUnless 函数使用 内部持有关键字 it 引用


list 集合的创建 和 使用

可变list集合学习 不可变的集合,无法完成可变的操作

不可变集合变换可变集合

可变集合变换不可变集合

mutator 函数学习 可以对集合进行非常方便的操作

list 集合 遍历方式

list 集合 元素解构获取 与过滤

set 集合 创建与元素获取

set 集合 可变集合创建 与操作

集合转换 去重使用

kotlin 的数组创建方式

map集合的创建

map集合值的获取

map 集合的遍历方式


map集合的可变集合创建 与集合中数据的操作方法

kotlin 新建的class 的构造方法 中的参数, 必须使用var 或者 val 修饰之后,才能直接使用!!! 如果不修饰,必须要写参数去接收才行。


kotlin 多个构造方法 写法。与调用, 必须使用关键字constructor 。必须 调用主构造方法。

构造函数中添加默认参数

如果构造函数都有默认参数,调用的时候,一个参数不传递,会优先调用主构造参数。

kotlin init 代码块 新建的对象的时候,会优先于其他构造参数调用。可以在代码块中做一些校验,并且构造方法中的参数没有被修饰也能直接使用。
同时 init 的代码块的执行顺序 和 写在类中的val、var变量 的执行顺序为:谁写在前面 谁就会先执行。

懒加载 by lazy 使用: 调用的时候 方法才会开始执行。

kotiln 中 open 关键字的 使用
kotlin 中 所有的类 和 类中的函数 默认都是final 修饰的,如果要继承类、重写父类方法 都必须在父类中添加关键字open

kotlin 关键字 object 的使用
object 修饰的类 会自动变成一个单例模式的类 可以直接调用类中公有的变量和方法。类中的init 模块中的代码,想当于java 类中的 static 代码块。

object 关键字 可以直接 通过匿名类赋值的写法,对类的方法进行重写, 这样用起来不用继承类,非常方便。

companion 关键字使用 相当于 java的 static变量 和static 方法。

kotlin 内部类的使用 内部类要增加 inner 关键字 才能成为内部类 如果不添加 inner 关键字 则为嵌套类,只能外部类调用内部类,内部类无法调用外部类。

kotlin 中 data 关键字的 使用 data 关键字 类似javabean 的用法 默认重写了 toString 方法和 equals 方法 ,可以直接打印 bean中的值, equals 比较的也是 bean 中的每一项的值。


!!!注意:kotlin data 数据类 中的copy 方法调用只会 只会调用主构造方法,会忽略次构造方法。

operator 重载运算符 关键字 使用

ktlin 中的 枚举 enum

enum 类带参数的使用

kotlin 的 抽象类 abstract 使用

kotlin 泛型使用

泛型的方法中参数写法 传入参数 与 返回参数 泛型写法

泛型的约束 使用关键字 : + 父类即可

泛型添加扩展函数的方式

关键字 vararg 动态参数 用 这个关键字修饰之后 可以传任意数量的参数
out 关键字 修饰的变量 只能读取 不能 修改

关键字 out 和 in
out 关键字修饰的泛型: 父类集合可以接收子类集合的赋值 相当于java中的 ? extends T
in 关键字修饰的泛型:子类集合可以接收父类的赋值 相当于java中的 ? super T

关键字 reified 使用

kotlin 扩展函数的增加 直接写一个方法 方法名使用 类名.[新的方法名] 就可以完成 非常的方便。


kotlin 的let 函数的 写法 就是使用了泛型的扩展函数 我们也可以通过对源码的阅读 写出自己方便使用的扩展函数


kotlin 的扩展属性写法 必须使用get() 赋值

kotlin 协程

可空类型函数扩展。

关键字 infix 的使用


kotlin 扩展文件使用 类似工具类

kotlin 的 方法重命名

通过使用匿名扩展函数的方法 让 lambda 函数 内部持有this 引用

list 集合 的map 操作 flatmap 过滤 filter 函数 zip 合并

单例模式 懒汉式 双重校验 实现 饿汉式 只需要 object 类名 就可以了

注解使用




对于扩展函数 泛型 的综合运用 重点 lambda 函数默认的 返回值是 方法的最后一行,I.() 这样的写法 可以持有 this 引用 。


网友评论