スコープ関数

8700 ワード

Mungkin Beberapa Orang AdaヤンMasih bingung dengan perbedaan standart機能ヤンterdapat di kotlinダンbingung untuk mentutukan yang mana yang tepat untuk digunakan
Denini Saya Ahan Menjelaskan Perbedaan Pengunaan Antara Standart関数ダンCara menentukan関数Yang Tepat untuk digunakan

スコープ関数


APA ITU範囲機能?ディKotlin範囲機能adalah sebuah標準的な図書館lambda expression . DIブログINI Akan Kita Bahas mengenai t . let、T . run、T . Apply、T .

レット


MeruPakan sebuahスコープ機能Yang menjadikanオブジェクトsebagaiパラメタLamdanyaをさせてください.SEHingga perlu menggunakanそれはuntuk mengakses terhadapオブジェクトtersesesです.
コントゥーPenggunaan :
data class Student(
        val name : String,
        val major : String,

)

fun main() {

    val student = Student(name = "adit" ,major = "informatics")

    /**
     * Penggunaan let
    */
    student.let { it ->
        val text = "Nama saya ${it.name}, Jurusan saya ${it.major }"
        println(text) 
    }

/*
   output : Nama saya adit, Jurusan saya teknik informatics
*/

}

ラン


Hungsiは、Aman Mengembalikan Nilai Berdasarkan表現Yang Berada di Dalam Blokラムダを走らせます.Untuk Mengakses konteks dari objek、ia akan menggunakanレシーバー(これ).Fungsiは、Anaan Sangat Berguna Jika di Dalam Blok Turdapat Inisialisasi ObjekダンPerhitungan Untuk Nilai Kembalianを走らせます.
コントゥーPenggunaan :
   val name = "Aditiya"

    val result = name.run {
        val from = this
        val to = this.replace(oldValue = "Aditiya", newValue = "Ihzar")
        "Replace text from $from to $to"
    }
    println(result)


    /*
       Output : Replace text from Aditiya to Ihzar
   */

適用


PengertianはHampir Sama Dengan Runを適用します、Yang Membedakan Adalah戻り値DariはMerupakan屈折オブジェクトを使います
コントゥーPenggunaan :
data class Student(
        var nim : Int?,
        var name : String?,
        var major : String?,
        var address : String?
)

fun main() {

    val student : Student? = null

    /**
     * Contoh penggunaan apply
     */
    student?.apply {
        nim = 1811500584
        name = "Aditiya Prayogo"
        major = "teknik Informatika"
        address = "Jln komp ddn nomor 50"
    }

}
コンント人Penggunaan申し込み:
fun main() {
    val message = StringBuilder().apply {this : StringBuilder
        append("Aditiya ")
        append("Prayogo!")
    }

    println(message.toString())
}

/*
   output : Aditiya Prayogo
*/

also


Fungsiも、Sama Seperti Fungsiを適用します.Namun Untuk Konteks Obejeknya Tersetta Sebagai Argumen ( IT )Fungsiも、Baiknya Digunakanケティカ北ingin Menggunakan konteks dari objek sebagai argumen tanpa harus mengubah nilainyaです.
コントゥーPenggunaan :
fun main() {
    val text = "Hello Aditiya"

    println(text)

    val result = text.also {
        println("value length -> ${it.length}")
    }
}

/*
   output :
           Hello Aditiya
           value length -> 13
*/

Kapan Kita Menggunakanは、実行、適用、ダンも?


シマクフローチャートdi Bawah ini

屈折

  • https://medium.com/mobile-app-development-publication/mastering-kotlin-standard-functions-run-with-let-also-and-apply-9cd334b0ef84
  • https://proandroiddev.com/kotlin-scope-functions-made-simple-c59b97a04ca2