Convenience Init


Kita akan membahas tentang Convenience Init, disini kita akan belajar bagaimana menjadi “Pemalas”. Dalam pemrograman, menjadi malas seperti menulis kode yang singkat, kenyataannya adalah baik untuk tim dan user Kamu, asalkan itu readable dan membuat pekerjaan selesai.

Whenever there is hard work to be done, I assign it to the laziest man as he is sure to find an easy way of doing it. Be Lazy, think crazy.

Bill Gates

Silahkan buka Playground Kamu dan kita belajar bersama.

Buat Class dengan Init

Buatlah sebuah class Human

class Human {
  var name: String
  init(name: String) {
    self.name = name
 }

  // Convenience init intializes the designated init method
  convenience init() {
    self.init(name: "Bob Lee")
  }
}

convenience init menginisialisasi fungsi init dengan memanggil self.init.

Buat Object

let lee = Human(name: "Bob Lee") // init(name: String)
let bob = Human() // Convenience init()

Inisialisasi UIColor

Buatlah sebuah instance yang menyimpan uicolor.

import UIKit

let randomColor = UIColor(colorLiteralRed: 255/255, green: 80/255, blue: 85/255, alpha: 1)

Custom Convenience Init

Buat convenienceinit yang menginisialisasi init dengan menambahkan ekstensi ke UIColor.

extension UIColor {
 convenience init(r: Float, g: Float, b: Float) {
   self.init(colorLiteralRed: r/255, green: g/255, blue: b/255, alpha: 1)
 }
}

let myFavoriteColor = UIColor(r: 255, g: 80, b: 85)

Jadi dengan convenience init ini memungkinkan kita untuk mempersingkat penulisan inisialisasi. Dalam penerapannya biasanya convenience init digunakan untuk:
– Inisialisasi secara cepat untuk open source project
– Custom convenience init untuk UIKit

Kamu telah belajar bagaimana menjadi malas dan efektif sekaligus. Coba bayangkan, Kamu adalah pemilik library untuk teman satu tim Kamu. Mereka tidak lagi harus menggunakan metode init yang biasanya. Sebagai gantinya, Kamu dapat memberikan beberapa metode convenience init sehingga “hidup” mereka menjadi lebih mudah :-).

Semoga bermanfaat.

0 0 votes
Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

0
Would love your thoughts, please comment.x
()
x