Kotlin中,lamda只有一个参数时,可以用默认参数名称it代替命名参数。
所以下面两种方式的代码,含义是一样的:
people.maxBy { p: Person -> p.age }
people.maxBy { it.age }
ComponentActivity的viewModel方法实现中,ViewModelLazy的第二个 、第三个参数都是lamda:
@MainThread
inline fun <reified VM : ViewModel> ComponentActivity.viewModels(
noinline factoryProducer: (() -> Factory)? = null
): Lazy<VM> {
val factoryPromise = factoryProducer ?: {
defaultViewModelProviderFactory
}
return ViewModelLazy(VM::class, { viewModelStore }, factoryPromise)
}