Kata Kunci mutating
Tulis kaedah yang mengubah keadaan struct dan enum.
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)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
- Jenis Nilai dan Ketidakbolehubahan
- Kata Kunci mutating
- Mutasi dan Penetapan Semula self
- Alternatif Tanpa Mutasi