Junior
Ποιες λειτουργίες πεδίου γνωρίζετε στο Kotlin;
sobes.tech AI
Απάντηση από AI
let: Εκτελεί ένα μπλοκ κώδικα σε ένα αντικείμενο και επιστρέφει το αποτέλεσμα της τελευταίας έκφρασης. Χρησιμοποιείται συχνά για ασφαλείς κλήσεις μεθόδων σε nullable αντικείμενα.run: Έχει δύο παραλλαγές:- Ως επέκταση λειτουργίας: Εκτελεί ένα μπλοκ κώδικα στο αντικείμενο (
this) και επιστρέφει το αποτέλεσμα της τελευταίας έκφρασης. - Ως ανεξάρτητη λειτουργία: Εκτελεί ένα μπλοκ κώδικα χωρίς δέκτη και επιστρέφει το αποτέλεσμα της τελευταίας έκφρασης.
- Ως επέκταση λειτουργίας: Εκτελεί ένα μπλοκ κώδικα στο αντικείμενο (
with: Εκτελεί ένα μπλοκ κώδικα σε ένα αντικείμενο-δέκτη που παρέχεται ως όρισμα και επιστρέφει το αποτέλεσμα της τελευταίας έκφρασης.apply: Εκτελεί ένα μπλοκ κώδικα σε ένα αντικείμενο (this) και επιστρέφει το ίδιο το αντικείμενο. Χρησιμοποιείται συχνά για τη διαμόρφωση ιδιοτήτων του αντικειμένου.also: Εκτελεί ένα μπλοκ κώδικα σε ένα αντικείμενο (it) και επιστρέφει το ίδιο το αντικείμενο. Χρησιμοποιείται για παρενέργειες στο αντικείμενο.
// Παράδειγμα χρήσης του let
val name: String? = "Kotlin"
val length = name?.let {
// this == null
// it == "Kotlin"
it.length // Επιστρέφει το μήκος της συμβολοσειράς
} // length == 6
// Παράδειγμα χρήσης του run ως επέκταση
val numbers = mutableListOf(1, 2, 3)
val firstAndLast = numbers.run {
listOf(first(), last())
// this == numbers
} // firstAndLast == [1, 3]
// Παράδειγμα χρήσης του run ως ανεξάρτητης λειτουργίας
val result = run {
// Χωρίς δέκτη
println("Εκτέλεση μπλοκ")
1 + 2 // Επιστρέφει 3
} // result == 3
// Παράδειγμα χρήσης του with
val configuration = configureUsing {
// this - το αντικείμενο που περνάει στο configureUsing
width = 100
height = 200
}
fun configureUsing(builder: ScopeExample.() -> Unit): ScopeExample {
val example = ScopeExample()
example.builder()
return example
}
class ScopeExample {
var width: Int = 0
var height: Int = 0
}
// Παράδειγμα χρήσης του apply
val person = mutableListOf<String>().apply {
// this == λίστα
add("Alice")
add("Bob")
} // person == ["Alice", "Bob"]
// Παράδειγμα χρήσης του also
val list = mutableListOf(1, 2, 3)
val doubledList = list.also {
// it == λίστα
println("Επεξεργασία λίστας: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]