Fungsi apply() dan copy() pada Kotlin

thumbnail

Mungkin fungsi apply() dan copy() belum pernah anda dengar sebelumnya, atau jika anda sebelumnya belajar pemrograman Java maka anda juga tidak menemukan fungsi ini didalamnya. Ya, apply() dan copy() adalah salah satu fungsi yang dimiliki oleh bahasa pemrograman Kotlin, fungsi tersebut berguna untuk meringkas suatu code dan mencegah terjadinya pengulangan code (boilerpate), serta agar lebih mudah dipahami oleh para developer.

Disini saya akan membuat program sederhana menggunakan kedua fungsi tersebut, yaitu apply() dan copy(). Untuk lebih jelas, anda dapat melanjutkan membaca tutorial ini.

Penggunaan fungsi apply() pada Kotlin

  1. Buatlah File/Class Kotlin
  2. Buatlah fungsi tambahan apply() sebagai alternatif saat kita memanggil atau memodifikasi suatu nilai, dengan menggunakan method Setter dan Getter. Selain itu, kamu juga bisa mengisi secara langsung argument di dalam Constructor.

class MainActivity : AppCompatActivity() {

  val dev = Person(null, null, null)

  override fun onCreate(savedInstanceState: Bundle?) {

      super.onCreate(savedInstanceState)

      val person = dev.apply {

          nama = "Inpows"

          umur = 23

          jeniskelamin = "Laki-Laki"

      }

      println("Person 1 : $person")

  }

  data class Person (

          var nama:String?,

          var umur:Int?,

          var jeniskelamin :String?

  )

}

Penggunaan fungsi copy() pada Kotlin

Fungsi copy() digunakan untuk menyalin semua data atau nilai, yang telah kita definnisikan sebelumnya didalam objek. Kemudian, kita menerapkannya pada sebuah object baru.

class MainActivity : AppCompatActivity() {

  val dev = Person(null, null, null)

  override fun onCreate(savedInstanceState: Bundle?) {

      super.onCreate(savedInstanceState)

      val person = dev.apply {

          nama = "Inpows"

          umur = 23

          jeniskelamin = "Laki-Laki"

      }

      val person2 = dev.copy(nama = "Inpows 2", umur = 22)

      println("Person 1 : $person \nPerson 2 : $person2")

  }

  data class Person (

          var nama:String?,

          var umur:Int?,

          var jeniskelamin :String?

  )

}

Output

Output apply and copy
Back To Top