Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与使用Kotlin和rx java CombineTest的表单验证混淆_Kotlin_Rx Java_Rx Java2_Rx Android_Rx Binding - Fatal编程技术网

与使用Kotlin和rx java CombineTest的表单验证混淆

与使用Kotlin和rx java CombineTest的表单验证混淆,kotlin,rx-java,rx-java2,rx-android,rx-binding,Kotlin,Rx Java,Rx Java2,Rx Android,Rx Binding,所以我想使用rx-java2进行表单验证。我在用科特林。我遇到了两个问题。emailObservable和passwordObservable都属于一次性类型。我试图通过调用val-emailObservable:Observable来指定类型,但Android Studio认为它是可丢弃的 其次,当我想使用方法combineLatest时,我得到了一个错误:使用提供的参数无法调用以下函数 emailObservable和passwordObservable都能正常工作。 我是RXJava新手,

所以我想使用rx-java2进行表单验证。我在用科特林。我遇到了两个问题。emailObservable和passwordObservable都属于
一次性类型。我试图通过调用
val-emailObservable:Observable
来指定类型,但Android Studio认为它是可丢弃的

其次,当我想使用方法
combineLatest
时,我得到了一个错误:使用提供的参数无法调用以下函数

emailObservable和passwordObservable都能正常工作。 我是RXJava新手,对这种类型的东西感到困惑

val emailObservable = RxTextView.afterTextChangeEvents(textEmail)
                .observeOn(AndroidSchedulers.mainThread())
                .map { x -> textEmail.text.length > 3 }
                .subscribe { x -> foo(x) }

val passwordObservable =RxTextView.afterTextChangeEvents(textPassword)
                .observeOn(AndroidSchedulers.mainThread())
                .map { x -> textPassword.text.length > 5 }
                .subscribe { x -> foo(x) }


Observable.combineLatest(emailObservable,
passwordObservable,
BiFunction { x: Boolean, y:Boolean -> x && y })

实际上,编译器/IDE是正确的。
subscribe
方法在
可观察的
上被调用,并返回一个
一次性的
,也就是说,您可以在
可观察的
完成之前使用它取消订阅(类似于“取消”)

然后,
combinelateest
方法期望在您提供2个
Disposable
s时使用2个
Observable
s调用。 要解决此问题,不应直接在链中调用
subscribe
,而应根据
combinelateest
的结果调用

例如:

fun main(args: Array<String>) {
    val first = Observable.intervalRange(1, 10, 0, 2, TimeUnit.SECONDS)
    val second = Observable.intervalRange(10, 20, 0, 1, TimeUnit.SECONDS)

    Observable.combineLatest(arrayOf(first, second)) {
        "${it[0]} -> ${it[1]}"
    }.blockingSubscribe() {
        println(it)
    }
}

实际上,编译器/IDE是正确的。
subscribe
方法在
可观察的
上被调用,并返回一个
一次性的
,也就是说,您可以在
可观察的
完成之前使用它取消订阅(类似于“取消”)

然后,
combinelateest
方法期望在您提供2个
Disposable
s时使用2个
Observable
s调用。 要解决此问题,不应直接在链中调用
subscribe
,而应根据
combinelateest
的结果调用

例如:

fun main(args: Array<String>) {
    val first = Observable.intervalRange(1, 10, 0, 2, TimeUnit.SECONDS)
    val second = Observable.intervalRange(10, 20, 0, 1, TimeUnit.SECONDS)

    Observable.combineLatest(arrayOf(first, second)) {
        "${it[0]} -> ${it[1]}"
    }.blockingSubscribe() {
        println(it)
    }
}