0Pricing
Swift Academy · Pelajaran

Urutan Beberapa Blok defer

Pahami urutan eksekusi defer yang terbalik.

Urutan Beberapa Blok defer adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Beberapa defer

Sebuah ruang lingkup dapat berisi beberapa blok defer. Semuanya berjalan saat keluar dari ruang lingkup.

func demo() {
    defer { print("A") }
    defer { print("B") }
    print("body")
}
demo()

Urutan Terbalik (LIFO)

Blok yang ditunda berjalan dalam urutan terbalik dari deklarasinya: deklarasi terakhir berjalan lebih dahulu.

func order() {
    defer { print("1") }
    defer { print("2") }
    defer { print("3") }
    print("start")
}
order()

Mengapa LIFO

Urutan LIFO mencerminkan cara penyiapan dan pembersihan bertumpuk: penyiapan yang paling baru dibatalkan terlebih dahulu.

func resources() {
    print("open A")
    defer { print("close A") }
    print("open B")
    defer { print("close B") }
    print("use both")
}
resources()

Model Mental Tumpukan

Bayangkan defer sebagai tumpukan: setiap defer menambahkan tugas, lalu tugas-tugas tersebut dikeluarkan dalam urutan terbalik saat ruang lingkup berakhir.

func stack() {
    defer { print("pop first-declared last") }
    defer { print("pop last-declared first") }
    print("push done")
}
stack()

defer dan State Lokal

Setiap defer menangkap variabel di sekitarnya dan melihat nilai akhirnya saat berjalan.

func state() {
    var x = 1
    defer { print("x is", x) }
    x = 42
}
state()

defer dalam Perulangan

Di dalam perulangan, setiap iterasi mendaftarkan dan menjalankan defer miliknya sendiri dalam urutan LIFO di akhir iterasi tersebut.

for i in 1...2 {
    defer { print("late", i) }
    defer { print("early", i) }
    print("body", i)
}

Ruang Lingkup Bertingkat

Defer berjalan saat ruang lingkupnya sendiri berakhir, sehingga defer pada blok bagian dalam berjalan sebelum defer pada blok bagian luar.

func nested() {
    defer { print("outer defer") }
    do {
        defer { print("inner defer") }
        print("inner body")
    }
    print("outer body")
}
nested()

Pembersihan yang Dapat Diprediksi

Urutan LIFO membuat pasangan buka/tutup yang sesuai secara alami ditutup dalam urutan yang benar.

func files() {
    print("open log")
    defer { print("flush log") }
    print("open db")
    defer { print("disconnect db") }
    print("transaction")
}
files()

Membaca Urutannya

Untuk memprediksi output, baca defer dari bawah ke atas: defer terakhir dalam ruang lingkup mencetak hasil terlebih dahulu.

func quiz() {
    defer { print("one") }
    defer { print("two") }
    print("body runs first")
}
quiz()

Menggabungkan dengan return

Semua defer yang terdaftar tetap berjalan dalam urutan LIFO meskipun fungsi mengembalikan nilai lebih awal.

func early(_ skip: Bool) {
    defer { print("cleanup 1") }
    defer { print("cleanup 2") }
    if skip { return }
    print("full body")
}
early(true)

Praktik Terbaik

Deklarasikan setiap pembersihan tepat setelah penyiapannya, lalu percayakan urutan LIFO untuk mengakhirinya dengan benar.

func pattern() {
    print("acquire 1")
    defer { print("release 1") }
    print("acquire 2")
    defer { print("release 2") }
    print("work")
}
pattern()

Pemeriksaan Singkat

Uji urutan defer.

Ringkasan

Beberapa blok defer berjalan dalam urutan terbalik (LIFO) saat keluar dari ruang lingkup: deklarasi terakhir berjalan lebih dahulu. Hal ini secara alami mengakhiri pasangan penyiapan/pembersihan bertingkat dalam urutan yang benar, bahkan saat terjadi pengembalian lebih awal.

func demo() {
    defer { print("1") }
    defer { print("2") }
    print("body")
}
demo()

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Urutan Beberapa Blok defer” gratis?

Ya — teks lengkap “Urutan Beberapa Blok defer” 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 “Urutan Beberapa Blok defer”?

Pahami urutan eksekusi defer yang terbalik. 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 2 dari 4.

Berapa lama pelajaran “Urutan Beberapa Blok defer” 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. Cara Kerja defer
  2. Urutan Beberapa Blok defer
  3. defer untuk Pembersihan Sumber Daya
  4. defer dengan Kesalahan dan Pengembalian Awal
← Kembali ke Swift Academy