我可以在Kotlin中将_task.map替换为Transformations.map吗



代码A来自项目。

我认为代码B和代码A是一样的,对吧?

代码A

val task: LiveData<Task?> = _task
val completed: LiveData<Boolean> = _task.map { input: Task? ->
input?.isCompleted ?: false
}

代码B

val task: LiveData<Task?> = _task
val completed =  Transformations.map(_task){input: Task? ->
input?.isCompleted ?: false
}

是的,它是完全相同的,因为LiveData.map是从Transformations.kt文件提供的扩展函数,它是依赖项的一部分:

def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"

这就是map扩展函数的作用,它与代码B:完全相同

inline fun <X, Y> LiveData<X>.map(crossinline transform: (X) -> Y): LiveData<Y> =
Transformations.map(this) { transform(it) }

最新更新