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]