Ich verwende RxJava in einem meiner Projekte, habe eine meiner Klassen mithilfe des Android Studio-Plugins in Kotlin konvertiert und in einem der Map flatMap
Lambda (Func1 in Java) sieht die Zwischenrückgabe wie folgt aus @Func1
.
Ich habe keine Ahnung, was das bedeutet.
something.flatMap(Func1<ArticleCriteria, Observable<Pair<String, String>>> {
val isTemporaryClone = it.isATemporaryClone
val isTheOriginalToken = it.tokenIsOriginalHere
if (isTemporaryClone) {
if (!isTheOriginalToken) {
return@Func1 paramsError("Token is always original for temp articles")
}
return@Func1 mJobRunner.doNotRun(DeleteArticleJob.TAG)
.doOnNext(deletePersonalActionById(articleId))
}
runArticleJobAsync(DeleteArticleJob.TAG, it)
})
return@name
legt fest, für welche Abschlusserklärungreturn
angewendet werden soll.In Kotlin können Sie die Rückkehr vom verschachtelten Abschluss aufrufen, um den äußeren Abschluss zu beenden. In Java ist das nicht möglich.
Normalerweise können Sie weglassen
@name
.In Ihrem Beispiel können Sie es nicht weglassen, da
Func1
es in einer anderen Funktion verwendet wird.quelle
@Func1
kann er nicht weggelassen werden.@Func1
weggelassen werden kann? Ich habe versucht, den Ausdrucksomething.flatMap(...)
in einer Deklaration der obersten Ebene zu verwenden, aber ich habe denreturn
Fehler " ist hier nicht erlaubt" erhalten.when
(das Switch-Case-Äquivalent bei Kotlin) zu verwenden? Oft möchte ich es brechen, wenn die Einrückung zu viel ist ...