Swift Academy · Pelajaran

Kata Kunci mutating

Tulis kaedah yang mengubah keadaan struct dan enum.

Pelajaran 2 daripada 413 langkah

Kata Kunci mutating ialah pelajaran Swift Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Swift Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.

Kaedah Tidak Boleh Mengubah Secara Default

Kaedah tika bagi struct tidak boleh mengubah sifat tersimpan struktur itu melainkan kaedah tersebut ditandakan sebagai mutating.

struct Counter {
    var value = 0
    mutating func increment() {
        value += 1
    }
}
var c = Counter()
c.increment()
print(c.value)

Mengapa mutating Diperlukan

Oleh sebab struct ialah jenis nilai, pengompil memerlukan Anda memilih mutation secara jelas supaya perubahan itu nyata.

struct Bank {
    var balance = 0
    mutating func deposit(_ amount: Int) {
        balance += amount
    }
}
var b = Bank()
b.deposit(50)
print(b.balance)

Kaedah Tanpa Mutation

Kaedah yang hanya membaca sifat tidak memerlukan mutating.

struct Rectangle {
    var width = 0
    var height = 0
    func area() -> Int {
        return width * height
    }
}
let r = Rectangle(width: 3, height: 4)
print(r.area())

mutating pada Enumerasi

Enumerasi juga boleh mempunyai kaedah mutating yang menukar instans kepada kes yang berbeza.

enum Light {
    case on, off
    mutating func toggle() {
        self = (self == .on) ? .off : .on
    }
}
var l = Light.off
l.toggle()
print(l)

Tidak Boleh Dipanggil pada let

Anda tidak boleh memanggil kaedah mutating pada instans pemalar (let); tindakan ini menghasilkan ralat pengompilan.

struct Counter {
    var value = 0
    mutating func bump() { value += 1 }
}
var c = Counter()
c.bump()
// let d = Counter(); d.bump() // error
print(c.value)

Perubahan Berbilang Sifat

Satu kaedah mutating boleh mengubah beberapa sifat serentak.

struct Player {
    var x = 0
    var y = 0
    mutating func move(dx: Int, dy: Int) {
        x += dx
        y += dy
    }
}
var p = Player()
p.move(dx: 3, dy: 5)
print(p.x, p.y)

mutating Memulangkan Nilai

Kaedah mutating juga boleh memulangkan nilai sambil mengubah keadaan.

struct Stack {
    var items: [Int] = []
    mutating func pop() -> Int? {
        return items.popLast()
    }
}
var s = Stack(items: [1, 2, 3])
print(s.pop() ?? -1)
print(s.items)

Pustaka Standard Menggunakan mutating

Kaedah seperti append pada Array ialah mutating, sebab itulah Anda memerlukan tatasusunan var untuk memanggilnya.

var nums = [1, 2]
nums.append(3)
print(nums)

mutating dan Keadaan Terbitan

Anda boleh mengemas kini keadaan terbitan dalam kaedah mutating supaya invarian kekal konsisten.

struct Wallet {
    var coins = 0
    var label = "empty"
    mutating func add(_ n: Int) {
        coins += n
        label = coins > 0 ? "has coins" : "empty"
    }
}
var w = Wallet()
w.add(5)
print(w.coins, w.label)

Turutan Penting

Pernyataan dalam kaedah mutating dijalankan dari atas ke bawah, jadi baris kemudian dapat melihat perubahan terdahulu.

struct Accumulator {
    var total = 0
    mutating func process() {
        total += 1
        total *= 10
    }
}
var a = Accumulator()
a.process()
print(a.total)

Class Tidak Memerlukan mutating

Jenis rujukan (class) boleh mengubah sifat tanpa kata kunci tersebut kerana jenis ini bukan jenis nilai.

class Box {
    var value = 0
    func bump() { value += 1 }
}
let box = Box()
box.bump()
print(box.value)

Semakan Pantas

Uji kata kunci mutating.

Imbas Kembali

Tandakan kaedah instans struct atau enumerasi sebagai mutating apabila kaedah itu mengubah sifat tersimpan atau, bagi enumerasi, menukar kes. Kaedah sedemikian tidak boleh dipanggil pada instans let. Class, sebagai jenis rujukan, tidak pernah memerlukannya.

struct C { var v = 0; mutating func inc() { v += 1 } }
var c = C()
c.inc()
print(c.v)
Percuma untuk bermula

Pelajari Swift dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
122
Pelajaran
409

Soalan Lazim

Adakah pelajaran “Kata Kunci mutating” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Swift Academy, termasuk “Kata Kunci mutating”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Kata Kunci mutating”?

Tulis kaedah yang mengubah keadaan struct dan enum. Anda berlatih Swift Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Swift Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Swift Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Kata Kunci mutating” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Jenis Nilai dan Ketidakbolehubahan
  2. Kata Kunci mutating
  3. Mutasi dan Penetapan Semula self
  4. Alternatif Tanpa Mutasi
← Kembali ke Swift Academy