Reference Kotlin, Reference Reference Java. , combine KFunction3 Kotlin, :
val f: kotlin.reflect.KFunction3<String, Boolean, Int, Double> = this::combine
java Reference , a Reference Expression , , :
val f:io.reactivex.functions.Function3<String,Boolean,Int,Double> =this::combine
, SAM Conversions lambda/ Reference Expression Java , , Kotlin - :
fun test() = TODO()
val exector:Executor = TODO()
exector.execute(::test)
Runnable task = new Runnable(){
public void run(){
test();
}
};
. Java, Reference Expression Kotlin
, , rx-java2. , Kotlin Function Reference Expression:
combineLatest(
ObservableSource<out T1>,
ObservableSource<out T2>,
ObservableSource<out T3>,
Function3<T1, T2, T3, out R>
)
combineLatest(
ObservableSource<out T1>,
ObservableSource<out T2>,
ObservableSource<out T3>,
ObservableSource<out T4>,
Function4<T1, T2, T3, T4, out R>
)
, Kotlin SAM Conversions lambda/ Java , Java .
4- combineLatest , , 4- io.reactivex.functions.Function3 ObservableSource. ObservableSource Java .
SAM Conversion, , , SAM, :
typealias RxFunction3<T1, T2, T3, R> = io.reactivex.functions.Function3<T1,T2,T3,R>
val f: RxFunction3<String, Boolean, Int, Double> = RxFunction3{ s, b, i-> 1.0}
, lambda/ Reference, :
typealias RxFunction3<T1, T2, T3, R> = io.reactivex.functions.Function3<T1,T2,T3,R>
fun <T1,T2,T3,R> KFunction3<T1,T2,T3,R>.toFunction3(): RxFunction3<T1, T2,T3,R> {
return RxFunction3 { t1, t2, t3 -> invoke(t1, t2, t3) }
}
Reference, , :
Observable.combineLatest(
strings(),
booleans(),
integers(),
this::combine.toFunction3()
)