Μέμο Kotlin
Publié le 29 May 2022
καλοί σύνδεσμοι
ποικιλό τμήμα κώδικα
αντιστοίχιση μείωση
Μετατρέψτε μια λίστα από bytes σε μια λίστα από strings και συνοψίστε τη λίστα των strings
σε μια συμβολοσειρά που περιέχει τη συγκένωση. Πώς να καταγράψετε το request που στάλθηκε (requestBodyContent:byte[]);
log.info(
requestBodyContent!!.map { it.toInt().toChar().toString() }
.reduce { request: String, s: String -> request + s }
)
αριθμητός και κλεισμένες κλάσεις
συνάρτηση διεπαφή και αναφορά μεθόδου
Μπορούμε να μετατρέψουμε μια οντότητα σε μοντέλο τομέα DTO με μια μέθοδο αναφοράς (stil λειτουργικό - Java 8)
fun findAllByLoginNot(
pageable:Pageable,
login:String)
:Page<UserDto> {
return userDao.findAllByLoginNot(
pageable,
login).map(::fromEntity)
}
μίαhttps://stackoverflow.com/a/22245383/837404[καλή εξήγηση]
Συλλέγε την τυπική έξοδο
package functional
import java.io.ByteArrayOutputStream
import java.io.PrintStream
import java.lang.System.out
import java.lang.System.setOut
import kotlin.test.AfterTest
import kotlin.test.BeforeTest
import kotlin.test.Test
import kotlin.test.assertEquals
class BasicsHOF {
private val standardOut: PrintStream? = out
private val outputStreamCaptor = ByteArrayOutputStream()
@BeforeTest
fun setUp() = setOut(PrintStream(outputStreamCaptor))
@AfterTest
fun tearDown() = setOut(standardOut)
@Test
fun `three times dope`() {
3.times { println("Hello") }
assertEquals(
buildString {
repeat(3) { append("Hello\n") }
deleteAt(length - 1)
}, outputStreamCaptor
.toString()
.trim()
)
}
fun Int.times(fn: () -> Unit) = (1..this).forEach { _ -> fn() }
}
Τι διαφορά υπάρχει στη Kotlin μεταξύ των apply, run, let, also, use και του with;
Σύγκριση των συναρτήσεων Kotlin και Χρήση των Λειτουργιών Lambda Αναφορά
Εφαρμόστε
run, let, also, use, et `with`Προσφέρουν διαφορετικούς τρόπους για την επεξεργασία των αντικειμένων. Κάθε μία έχει τα δικά της σενάρια χρήσης και συμπεριφορές. Επιπλέον, οι μορφές lambda reference επιτρέπουν να γίνει ο κώδικας πιο ανάγνωστος και επαναχρησιμοποιήσιμος αναφέροντας σε υπάρχουσες lambda λειτουργίες.Η συνάρτηση`apply`Χρησιμοποιείται για να ρυθμίσει ένα αντικείμενο κατά τη δημιουργία του. Επιστρέφει το αντικείμενο στο οποίο καλείται.
Παράδειγμα με λάμδα reference :
val someObject = SomeClass().apply(::configureObject)
Παράδειγμα με lambda:
val someObject = SomeClass().apply {
// configuration des propriétés de someObject
}
τρέξε
Η λειτουργία`run`Χρησιμοποιείται για να εκτελέσει ένα μπλοκ κώδικα σε ένα αντικείμενο και επιστρέφει το αποτέλεσμα του μπλοκ κώδικα.
Παράδειγμα με αναφορά lambda :
val result = someObject.run(::someFunction)
Παράδειγμα με lambda :
val result = someObject.run {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
άφε
Η λειτουργία`let`Χρησιμοποιείται για να εκτελέσει ένα τμήμα κώδικα σε ένα αντικείμενο και να επιστρέψει το αποτέλεσμα του τμήματος κώδικα.
Παράδειγμα με lambda αναφορά
val result = someObject.let(::processObject)
Παράδειγμα με lambda :
val result = someObject.let {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
και
Η συνάρτηση`also`χρησιμοποιείται για να εκτελέσει μια επιπλέον ενέργεια σε ένα αντικείμενο και επιστρέφει το αντικείμενο στο οποίο καλείται.
Παράδειγμα με αναφορά lambda :
someObject.also(::performAdditionalAction)
Παράδειγμα με lambda :
someObject.also {
// action additionnelle sur someObject
}
χρήση
Η λειτουργία`use`χρησιμοποιείται για να εργαστεί με πόρους που πρέπει να κλειστούν μετά τη χρήση. Καλέει αυτόματα τη συνάρτηση`close`στο τέλος του μπλοκ.
Παράδειγμα με αναφορά lambda:
someResource.use(::useResource)
Παράδειγμα με lambda :
someResource.use {
// travailler avec la ressource
}
με
Η λειτουργία`with`χρησιμοποιείται για να καλέσει πολλές μεθόδους σε ένα αντικείμενο χωρίς να επαναλαμβάνει το όνομά του και επιστρέφει το αποτέλεσμα της τελευταίας έκφρασης.
Παράδειγμα με αναφορά lambda :
val result = with(someObject, ::processWithObject)
Παράδειγμα με lambda :
val result = with(someObject) {
// appeler des méthodes sur someObject
// la dernière expression est renvoyée
}
Χρησιμοποιώντας τις μορφές lambda reference ή τα μπλοκ`{}`, μπορείτε να ενσωματώσετε τη λογική σε ξεχωριστές συναρτήσεις, βελτιώνοντας έτσι την ανάγνωση και την επαναχρησιμοποίηση του κώδικα.
αφήστε Function σε Kotlin
Η συνάρτηση`let`en Kotlin χρησιμοποιείται για να εκτελεί πράξεις σε ένα αντικείμενο και να επιστρέφει διαφορετικό αποτέλεσμα. Ωστόσο, είναι σημαντικό να σημειωθεί ότι η συνάρτηση`let`δεν τροποποιεί την αρχική κατάσταση του αντικειμένου στο οποίο καλείται.
Υπογραφή |
|
χρήση |
Η λειτουργία`let`συχνά χρησιμοποιείται για να εφαρμόσει μετασχηματισμούς σε ένα αντικείμενο και να αποκτήσει ένα αποτέλεσμα βασισμένο σε αυτά τα μετασχηματισμοί. |
Αποτελέσμα |
Η τιμή που επιστρέφει η συνάρτηση`let`είναι το αποτέλεσμα της έκφρασης lambda που περάστηκε ως όρισμα, συνήθως το αποτέλεσμα των λειτουργιών που πραγματοποιήθηκαν στο αντικείμενο. |
παρενέργειες |
Αν και η λειτουργία`let`μπορεί να έχει παρενέργειες στο αντικείμενο όταν χρησιμοποιείται στη έκφραση lambda, αλλά δεν τροποποιεί την αρχική κατάσταση του αντικειμένου. |
Έτσι, η συνάρτηση`let`είναι ένας ελεγαντικός τρόπος να εκτελείτε λειτουργίες σε ένα αντικείμενο, παίρνοντάς ένα παράγουμενο αποτέλεσμα, διατηρώντας την ακεραιότητα του αρχικού αντικειμένου.