Junior
კოტლინში რა ხდის ფუნქციებს იცით?
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("Running a block")
1 + 2 // აბრუნებს 3
} // result == 3
// `with` გამოყენების მაგალითი
val configuration = configureUsing {
// this - გადაცემული ობიექტი
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("Processing list: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]