Swap-Funktion in Kotlin
gibt es eine bessere Art und Weise zu schreiben, generische swap-Funktion in kotlin anderen als java beschriebene Weise in Wie schreibt man einen basic-swap-Funktion in Java.
Ist es kotlin-Sprache-Funktion, die generische swap-Funktion übersichtlicher und intuitiv?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Keine Notwendigkeit, eine swap-Funktion in Kotlin an alle. Sie können verwenden Sie die vorhandene auch Funktion, zum Beispiel:
a = b.also({ b = a })
. Wir sehenalso()
- Methode aufgerufen wird, aufb
mit einem argument von lambda{ b = a }
.also
ruft einfach seine parameter, dann zurückthis
. Also erstmal lambda{ b = a }
ausgeführt wird, danna
zugeordnet ist, das Ergebnisalso()
, die Ihr "diese", das ist der ersteb
.Wenn Sie schreiben wollen, einige wirklich beängstigend-code haben, könnte eine Funktion wie diese:
Erlauben würde, dass Sie code schreiben, wie diese
Beachten Sie, dass ich tun NICHT empfehlen. Nur zeigen, dass es möglich ist.
inline
.Edit: Dank @hotkey für seinen Kommentar
Ich glaube der code für das austauschen von zwei Variablen ist einfach genug, nicht zu versuchen, es zu vereinfachen nicht weiter.
Die eleganteste form der Umsetzung IMHO ist:
Vorteile:
temp
bleibt nicht in dem Umfang.run { val temp = a; a = b; b = temp }
ist sogar ein wenig besser, weil es mehr macht er klar, dass es etwas wie eine single-action, und auchtemp
nicht Leck in den äußeren Rahmen (nicht zu verunreinigen Abschluss etc.).Kotlin fördert die Verwendung von unveränderlichen Daten, wenn möglich (wie mit
val
stattvar
). Dies reduziert erheblich die änderung für subtile bugs, da es möglich ist, auf Grund besser über code, wenn die Werte nicht ändern.Vertauschen von zwei Werten ist genau das Gegenteil von unveränderlichen Daten: Tat, ich meine den Wert von
a
vor oder nach dem Tausch?Betrachten den code so umschreiben, in den folgenden unveränderlich Weg:
Dieser Werke durch die Verwendung von destructuring Erklärungen, zusammen mit der integrierten
to
Erweiterung Funktion erstellt, diePair
.Das ist eine gute Verwendung für mit:
Um Kotlin
List
Sie könnten diese Art von Erweiterung. Es gibt eine Kopie der Liste mit Elementen auf Indizes a und b vertauscht.