Comprenda la diferencia entre la gramática kotlin, aplique y ejecute takeIf takeUnless en 10 minutos

conclusión primero

la diferencia valor de retorno operación interna
dejar la última línea él
aplicar la propia persona que llama este
también la propia persona que llama él
correr la última línea esto u omitir
  • Primero escriba una clase de Persona para demostración para facilitar la visualización de datos.
  • En segundo lugar, escriba de 1 a 2 métodos de prueba para cada API y
    vea el registro impreso (el que está en la nota)
class Person(var name: String, var age: Int) {
    override fun toString(): String {
        return "[姓名:$name ~ 年龄:$age]"
    }
}

dejar

  • Es adecuado para el procesamiento prolongado de algunos datos que necesitan sondeo,
  • El valor devuelto es la última fila.
  • Úselo internamente en lugar de

//原始数据[姓名:张三 ~ 年龄:20]
//修改后数据[姓名:张三 ~ 年龄:30]
//二次let数据kotlin.Unit
fun test1(): Unit {
    val person = Person("张三", 20)
    val result = person.let {
        println("原始数据${it.toString()}")
        it.age = 30
        println("修改后数据${it.toString()}")
        it.age = 40
    }.let {
        println("二次let数据${it.toString()}")
    }
    return result
}

//原始数据[姓名:张三 ~ 年龄:20]
//修改后数据[姓名:张三 ~ 年龄:30]
//二次let数据[姓名:张三 ~ 年龄:40]

fun test01(): Person {
    val person = Person("张三", 20)
    val result = person.let {
        println("原始数据${it.toString()}")
        it.age = 30
        println("修改后数据${it.toString()}")
        it.age = 40
        it
    }.let {
        println("二次let数据${it.toString()}")
        it
    }
    return result
}

aplicar

  • El valor de retorno es la persona que llama en sí
  • Usa esto internamente en su lugar

//原始数据[姓名:张三 ~ 年龄:20]
//修改后数据[姓名:张三 ~ 年龄:30]
//二次apply数据[姓名:张三 ~ 年龄:40]

fun test2(): Person {
    val person = Person("张三", 20)
    val result = person.apply {
        println("原始数据${this.toString()}")
        this.age = 30
        println("修改后数据${this.toString()}")
        this.age = 40
    }.apply {
        println("二次apply数据${this.toString()}")
    }
    return result
}

también

  • El valor de retorno es la persona que llama en sí
  • Úselo internamente en lugar de
//原始数据[姓名:张三 ~ 年龄:20]
//修改后数据[姓名:张三 ~ 年龄:30]
//二次also数据[姓名:张三 ~ 年龄:40]

fun test3(): Person {
    val person = Person("张三", 20)
    val result = person.also {
        println("原始数据${it.toString()}")
        it.age = 30
        println("修改后数据${it.toString()}")
        it.age = 40
    }.also {
        println("二次also数据${it.toString()}")
    }
    return result
}

correr

  • El valor de retorno es la última línea.
  • Usa esto internamente en su lugar
  • Puede asignar directamente a la persona que llama sin el nombre de la variable
//原始数据[姓名:张三 ~ 年龄:20]
//修改后数据[姓名:张三 ~ 年龄:30]
//二次also数据kotlin.Unit

fun test4(): Unit {
    val person = Person("张三", 20)
    val result = person.run {
        println("原始数据${toString()}")
        age = 30
        println("修改后数据${toString()}")
        age = 40
    }.run {
        println("二次also数据${toString()}")
    }
    return result
}


//原始数据[姓名:张三 ~ 年龄:20]
//修改后数据[姓名:张三 ~ 年龄:30]
//二次also数据[姓名:张三 ~ 年龄:40]
fun test04(): Person {
    val person = Person("张三", 20)
    val result = person.run {
        println("原始数据${toString()}")
        age = 30
        println("修改后数据${toString()}")
        age = 40
        this
    }.run {
        println("二次also数据${toString()}")
        this
    }
    return result
}

tomar si

takeIf Si se cumple la condición del juicio, se ejecutará

//年龄大于19岁:[姓名:张三 ~ 年龄:20]
//takeIf最后一行返回:[姓名:张三 ~ 年龄:40]
fun test5() {
    val person = Person("张三", 20)
    person.takeIf { it.age > 19 }.let {
        println("年龄大于19岁:${it.toString()}")
        it!!.age = 40
        it
    }.let {
        println("takeIf最后一行返回:${it.toString()}")
    }

tomar a menos que

takeUnless Ejecutar si la condición del juicio no es verdadera

//年龄 不是 大于21岁:[姓名:张三 ~ 年龄:20]
//takeUnless最后一行返回:[姓名:张三 ~ 年龄:40]
fun test05() {
    val person = Person("张三", 20)
    person.takeUnless { it.age > 21 }.let {
        println("年龄 不是 大于21岁:${it.toString()}")
        it!!.age = 40
        it
    }.let {
        println("takeUnless最后一行返回:${it.toString()}")
    }
}

Supongo que te gusta

Origin blog.csdn.net/admin_jalen/article/details/123190946
Recomendado
Clasificación