这是一个 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 一样制作一个 delaration。
这只是两种语言在如何编写lambda方面的语法差异。
不幸的是,Java lambda是在原始语言已经设计很久之后添加的,因此为了向后兼容,它更难阅读。
但也许你只是在问你是否可以把lambda放在函数括号里?您仍然可以在 Kotlin 中执行此操作,但编译器会给您一个警告,因为它的可读性较差。
val postalCode: LiveData<String> = Transformations.switchMap(addressInput, {
address -> repository.getPostCode(address) })
另外,你的第一段代码不是函数声明...这是一个属性分配。您的 Kotlin 属性在类初始化时为其分配一次,而您的 Java 方法每次调用时都会创建一个新实例。