რა განსხვავებაა Kotlin-ში let, run, also და apply გაფართოების ფუნქციებს შორის?
sobes.tech AI
პასუხი AI-სგან
let: ობიექტზე დახურვის გამოძახება და დახურვის შედეგის დაბრუნება. საშუალებას აძლევს ობიექტი გამოიყენოს როგორც ლამბდა-გამოხატვის არგუმენტი (it). შესაფერისია nullable ობიექტებთან მუშაობისთვის.
// გამოყენების მაგალითი let-ის
val nullableString: String? = "Hello"
val length = nullableString?.let {
// it - ეს არის არა-null String
it.length
}
run: კოდის ბლოკის შესრულება ობიექტზე და ბლოკის შედეგის დაბრუნება. ბლოკის შიგნით ობიექტი ხელმისაწვდომია როგორც this. სასარგებლოა ობიექტის ინიციალიზაციისა და მეთოდების გამოძახებისთვის.
// გამოყენების მაგალითი run-ის
val result = buildString {
// this - ეს არის StringBuilder
append("Start\n")
append("Middle\n")
}.run {
// this - ეს არის String
uppercase()
}
also: ობიექტზე დახურვის გამოძახება და თავად ობიექტის დაბრუნება. საშუალებას აძლევს დამატებითი მოქმედებების (მაგალითად, ლოგირება ან კონფიგურაცია) განხორციელებას ობიექტზე, მისი შეცვლის გარეშე.
// გამოყენების მაგალითი also-ის
val list = mutableListOf("a", "b", "c").also {
// it - ეს არის MutableList
println("შექმნილი სია: $it")
}
apply: ობიექტზე დახურვის გამოძახება და თავად ობიექტის დაბრუნება. ბლოკის შიგნით ობიექტი ხელმისაწვდომია როგორც this. სასარგებლოა ობიექტის თვისებების კონფიგურაციისთვის.
// გამოყენების მაგალითი apply-ის
val textView = TextView(context).apply {
// this - ეს არის TextView
text = "გამარჯობა, მსოფლიო!"
textSize = 16f
setTextColor(Color.BLACK)
}
ძირითადი განსხვავებები:
| ფუნქცია | როგორ არის ხელმისაწვდომი ობიექტი | რა აბრუნებს | ტიპიური გამოყენება |
|---|---|---|---|
let |
it |
ლამბდა-ფუნქციის შედეგი | Nullable ობიექტები, ტრანსფორმაცია |
run |
this |
ლამბდა-ფუნქციის შედეგი | ობიექტის ინიციალიზაცია და მეთოდების გამოძახება |
also |
it |
თავად ობიექტი | დამატებითი მოქმედებები (Side effects) |
apply |
this |
თავად ობიექტი | თვისებების კონფიგურაცია |