这是一个Kotlin函数声明
val postalCode: LiveData<String> = Transformations.switchMap(addressInput) {
address -> repository.getPostCode(address) }
这是一个Java函数声明
public final LiveData<String> postalCode(){
Transformations.switchMap(addressInput, (address) -> {
return repository.getPostCode(address);
})};
1-为什么不能在Kotlin中声明如下:
... .(addressInput, (address) -> {
return repository.getPostCode(address);
})
,请说明如何才能像Java那样做一个延迟。
这只是两种语言在如何编写lambda方面的语法差异。
不幸的是,Java lambdas是在原始语言已经设计好很久之后添加的,因此为了向后兼容,它有点难读。
但也许您只是在问是否可以将lambda放在函数括号内? 您仍然可以在Kotlin中这样做,但是编译器会给您一个警告,因为它的可读性较差。
val postalCode: LiveData<String> = Transformations.switchMap(addressInput, {
address -> repository.getPostCode(address) })
另外,您的第一段代码不是函数声明,而是属性赋值。 Kotlin属性在类初始化时分配一次,而Java方法在每次调用时创建一个新实例。