代码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) }