当前位置: 代码迷 >> 综合 >> Kotlin 常用标准函数解析
  详细解决方案

Kotlin 常用标准函数解析

热度:10   发布时间:2024-02-20 11:51:41.0

 

Kotlin 中的标准函数指的是在 Standard.kt 中定义的函数,然后我就来写一下我经常会用到的标准函数,顺便做过总结。

 

let

kotlin 为了空安全不允许定义为空的,想要定义的话就必须加上问号,但是在实际编码中,有好多情况就好像下面的代码一样

mVideoPlayer?.setVideoView(activity.course_video_view)
mVideoPlayer?.setControllerView(activity.course_video_controller_view)
mVideoPlayer?.setCurtainView(activity.course_video_curtain_view)

写的时候感觉特别烦人,老是要进行判断,其实可以写成这样。

mVideoPlayer?.let {it.setVideoView(activity.course_video_view)it.setControllerView(activity.course_video_controller_view)it.setCurtainView(activity.course_video_curtain_view)
}

并且还可以用 it 指代 mVideoPlayer,这样不就方便很多了?在这里,let操作符的作用:当时用符号?.验证的时候忽略掉null。

使用场景:使用 let 函数去处理一个可能为 null 的对象统一做判空处理。

 

with

它是将某个对象作为函数的参数,在函数块内可以通过 this 来指代这个对象,返回值为函数块的最后一行或者指定的 return 表达式。

 

在函数底层,可以看出with函数是接收了两个参数,分别为T类型的对象 receiver 和一个 lambda 函数块

public inline fun <T, R> with(receiver: T, block: T.() -> R): R {contract {callsInPlace(block, InvocationKind.EXACTLY_ONCE)}return receiver.block()
}

所以 with 函数最原始样子应该是这样写的:

val result = with(user, {println("my name is $name, I am $age years old, my phone number is $phoneNum")1000})

但是由于with函数最后一个参数是一个函数,可以把函数提到圆括号的外部,看起来会更加简洁。

fun main(args: Array<String>) {val user = User("Kotlin", 1, "1111111")val result = with(user) {println("my name is $name, I am $age years old, my phone number is $phoneNum")1000}println("result: $result")
}

然后我们使用的结构一般是:

 with(object){//todo}

使用场景:适用于调用同一个类的多个方法的时候,可以不用去重复写类名,直接调用类的方法就可以了。比如说,可以用在RecyclerView中onBinderViewHolder中。

未按待续。。。