Optional Chaining Swift


Setelah sebelumnya mempelajari optional dan bagaimana cara mengkonversinya ke tipe normal.

Namun, kamu mungkin masih bertanya-tanya mengapa ? dan ! secara otomatis muncul ketika kamu mengakses properti dan method object. Jika tidak, tidak apa-apa. Tujuannya adalah untuk mencegah kamu menebak nebak apa yang sebenarnya terjadi.

Kamu mungkin pernah melihat

import UIKit
let label = UILabel().highlightedTextColor?.cgColor

Tanda ? secara misterius muncul tiba-tiba. Oke sekarang kita coba me-replikasi fenomena itu.

Silahkan buka Playground lalu buatlah sebuah class Human yang berisi properti String name dan fungsi sayHello() .

class Human {

	var name: String

	init(name: String) {
		self.name = name
	}

	func sayHello() {
		print("Hai, Nama saya \(name)")
	}
}

Buat kelas, House, yang berisi properti yang tipenya Human? .

class House {
      
       var human: Human?
}

Inisialisasi Properti

Buat instance House dan assign properti human.

var jakartaHouse = House()
jakartaHouse.human = Human(name: "Raffan")

Memanggil Properti dan Method

Sekarang, coba ambil properti Human jakartaHouse. Karena tipe Human itu optional , tanda ? ditambahkan secara otomatis.

Rules: Ketika kamu mengakses properti yang jenisnya optional, Swift akan menambahkan ?. Apapun yang terjadi setelah tanda ? akan menjadi optional.

var myName = jakartaHouse.human?.name // Selalu mengembalikan tipe `optional` karena Human adalah` optional`.
if let name = myName {
       print(name)
}

Force Unwrap

Kamu bisa memaksa membuka ! Optional Chaining. Namun, jika properti tidak diinisialisasi akan CRASH.

var bekasiHouse = House()
let houseOwner = bekasiHouse.human!.name // Error: human tidak memiliki nilai (belum diset)

Kesimpulan

Kamu telah mempelajari optional chaining memberikan pintasan ke properti dan method  antara class dan struct. Tanda ? secara otomatis muncul ketika kamu mengakses properti yang tipenya optional untuk menunjukkan bahwa apa pun yang datang setelahnya mungkin tidak mengandung nilai karena properti optional mungkin nil.

Semoga bermanfaat.

0 0 votes
Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

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