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("Running a block")
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("Processing list: $it")
}.map { it * 2 } // doubledList == [2, 4, 6]