0Pricing
Swift Academy · Pelajaran

Chaining Optional ?. Operator

Panggil metode dan akses properti pada optional tanpa menyebabkan program gagal.

Chaining Optional ?. Operator adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

Selamat Datang

Perantaian opsional memungkinkan Anda memanggil metode, mengakses properti, dan menggunakan subskrip melalui rangkaian nilai opsional dengan aman. Jika tautan mana pun dalam rangkaian bernilai nil, seluruh ekspresi mengembalikan nil tanpa menyebabkan galat fatal.

Operator ?.

```swift struct Address { var city: String } struct Person { var address: Address? } let alice = Person(address: Address(city: "Istanbul")) let bob = Person(address: nil) print(alice.address?.city) // Optional("Istanbul") print(bob.address?.city) // nil ```

Merangkai Beberapa Tingkat

Rangkaian dapat dibuat sedalam apa pun: ```swift struct Company { var ceo: Person? } let company = Company(ceo: alice) let city = company.ceo?.address?.city print(city ?? "Unknown") // "Istanbul" ``` Jika `ceo` atau `address` bernilai nil, `city` menjadi nil.

Memanggil Metode melalui Perantaian

Metode juga dapat dipanggil melalui perantaian opsional: ```swift var name: String? = "alice" let upper = name?.uppercased() // Optional("ALICE") name = nil let upper2 = name?.uppercased() // nil ``` Tipe hasilnya menjadi opsional: `String` menjadi `String?`.

Subskrip melalui Perantaian

```swift var dict: [String: [Int]]? = ["scores": [10, 20, 30]] let first = dict?["scores"]?[0] // Optional(10) dict = nil let none = dict?["scores"]?[0] // nil ``` Subskrip bekerja dengan cara yang sama seperti properti dan metode dalam suatu rangkaian.

Perantaian Menghasilkan Nilai Opsional

Meskipun hasil akhirnya tidak bersifat opsional, perantaian akan membungkusnya dalam Optional: ```swift struct Cat { var lives: Int = 9 } var cat: Cat? = Cat() let lives = cat?.lives // Int? not Int ``` Buka nilainya dengan `??`, `if let`, atau `guard let` sesuai kebutuhan.

Menetapkan Nilai melalui Perantaian

Anda dapat menetapkan properti melalui rantai opsional: ```swift var profile: UserProfile? = UserProfile() profile?.name = "Alice" ``` Jika `profile` bernilai nil, penetapan tersebut diabaikan secara diam-diam (tanpa galat).

Memanggil Metode Tanpa Nilai melalui Perantaian

```swift var manager: SoundManager? manager?.play() // silently ignored if nil ``` Pemanggilan tersebut mengembalikan `Void?` — `()` jika nilainya tidak nil, dan `nil` jika opsionalnya bernilai nil. Anda dapat memeriksa hasilnya untuk mengetahui apakah pemanggilan tersebut terjadi.

Perantaian Opsional vs Pembukaan Paksa

```swift // Forced unwrap — crashes if nil: let city = alice.address!.city // Optional chaining — safe: let city = alice.address?.city ``` Selalu utamakan perantaian opsional. Gunakan `!` hanya jika Anda yakin nilai nil tidak mungkin terjadi.

Menggabungkan dengan ?? untuk Nilai Bawaan

Rangkai `??` setelah perantaian opsional untuk menetapkan nilai bawaan dengan rapi: ```swift let displayCity = user.profile?.address?.city ?? "Unknown City" let count = database?.records?.count ?? 0 ``` Seluruh rantai tersebut akan menghasilkan suatu nilai atau menggunakan nilai bawaan.

Pemeriksaan Singkat

Jika salah satu tautan dalam rantai opsional bernilai `nil`, apa yang dikembalikan oleh seluruh ekspresi?

Ringkasan

Hal-hal penting: • `?.` mengakses properti, memanggil metode, dan menggunakan subskrip pada opsional dengan aman • Jika salah satu tautan bernilai nil, seluruh rantai mengembalikan nil • Tipe hasilnya selalu opsional (meskipun nilai akhirnya biasanya bukan opsional) • Gabungkan `?.` dengan `??` untuk pola akses aman dan nilai bawaan yang rapi • Utamakan `?.` daripada `!` untuk menghindari galat Berikutnya: opsional yang dibuka secara implisit.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Chaining Optional ?. Operator” gratis?

Ya — teks lengkap “Chaining Optional ?. Operator” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Chaining Optional ?. Operator”?

Panggil metode dan akses properti pada optional tanpa menyebabkan program gagal. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Chaining Optional ?. Operator” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Binding if let dan guard let
  2. Penggabungan Nilai Nihil dan Ternary dengan Optional
  3. Chaining Optional ?. Operator
  4. Optional yang Dilepas Pembungkusannya Secara Implisit dan Kapan Harus Menghindarinya
← Kembali ke Swift Academy