Sobes.tech
Junior

Kotlinде 'with' жана 'let' функцияларын кантип колдонуу керектигин түшүндүрүңүз.

sobes.tech AI

AIден жооп

with жана let — бул Kotlin китепканасынын стандарттык функциялары, алар объекттер менен иштөөдө ыңгайлуулук үчүн арналган, өзгөчө бир эле объект менен бир нече операцияны аткарууда.

with

  • with объектти (кабулчуну) жана лямбду кабыл алат.
  • Лямбду ичинде this кабылчуга шилтеме кылат.
  • Лямбду соңку билдирүүнүн жыйынтыгын кайтарат.
// `with` колдонуу мисалы
class Person(var name: String, var age: Int)

fun main() {
    val person = Person("Alice", 30)

    val description = with(person) {
        // `this` `person`ке шилтеме кылат
        this.age += 1 // аны калтырып коюуга болот
        "Name: $name, New age: $age" // бул строка кайтарылат
    }

    println(description) // Чыгуу: Name: Alice, New age: 31
}

Бул ыкма объект менен бир нече операцияны аткарганда, объектти кайра кайтарууну талап кылбастан, колдонулат. Объекттерди конфигурациялоодо пайдалуу.

let

  • let объектке (кабулчуга) кеңейтүү функциясы катары колдонулат жана лямбду кабыл алат.
  • Лямбду ичинде it же колдонуучу аты кабылчуга шилтеме кылат.
  • Лямбду соңку билдирүүнүн жыйынтыгын кайтарат.
// `let` колдонуу мисалы
fun main() {
    val name: String? = "Bob"

    val length = name?.let {
        // `it` `name`ке шилтеме кылат
        println("The name is not null: $it")
        it.length // жолдун узундугун кайтарат
    }

    println("Length: $length") // Чыгуу: The name is not null: Bob, Length: 3

    val nullName: String? = null
    val lengthOfNull = nullName?.let {
        // бул блок ишке кирбейт, анткени nullName == null
        it.length
    }

    println("Length of null: $lengthOfNull") // Чыгуу: Length of null: null
}

Бул ыкма, эгерде объект null эмес болсо, операцияларды аткаруу үчүн колдонулат (?. оператору менен бирге), же жаңы көрүү чөйрөсүн түзүү үчүн (it).

Негизги айырмачылыктар:

  • Чалуу ыкмасы: with — функция катары, let — кеңейтүү функциясы катары.
  • Лямбда ичиндеги өзгөрмө: withthis, letit (же колдонуучу аты).
  • Баштапкы максат: with — объект конфигурациялоо үчүн, let — көбүнчө null болушу мүмкүн объекттер менен иштөө жана локалдык көрүү чөйрөлөрүн түзүү үчүн.
with let
Чалуу Функция: with(object) { ... } Кеңейтүү функциясы: object.let { ... }
Референс this it (же колдонуучу аты)
Кайтаруу Лямбда соңку билдирүүнүн жыйынтыгы Лямбда соңку билдирүүнүн жыйынтыгы
Негизги колдонуу Объект конфигурациялоо, операцияларды топтоо Null текшерүү (?.let), локалдык көрүү чөйрө