Słowo kluczowe mutating
Pisanie metod modyfikujących stan struktur i wyliczeń.
Słowo kluczowe mutating to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
Metody domyślnie nie mogą modyfikować
Metoda instancji typu struct nie może zmieniać przechowywanych właściwości struktury, chyba że zostanie oznaczona jako mutating.
struct Counter {
var value = 0
mutating func increment() {
value += 1
}
}
var c = Counter()
c.increment()
print(c.value)Dlaczego potrzebne jest mutating
Ponieważ struktury są typami wartości, kompilator wymaga jawnego zezwolenia na modyfikowanie, aby zmiana była jednoznaczna.
struct Bank {
var balance = 0
mutating func deposit(_ amount: Int) {
balance += amount
}
}
var b = Bank()
b.deposit(50)
print(b.balance)Metody niemutujące
Metoda, która tylko odczytuje właściwości, nie potrzebuje słowa kluczowego 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 w enumie
Enumy również mogą mieć metody mutating, które przełączają instancję na inny przypadek.
enum Light {
case on, off
mutating func toggle() {
self = (self == .on) ? .off : .on
}
}
var l = Light.off
l.toggle()
print(l)Nie można wywołać na let
Nie można wywołać metody mutating na stałej instancji (let); taka próba powoduje błąd kompilacji.
struct Counter {
var value = 0
mutating func bump() { value += 1 }
}
var c = Counter()
c.bump()
// let d = Counter(); d.bump() // error
print(c.value)Zmiana wielu właściwości
Pojedyncza metoda mutating może jednocześnie zmienić kilka właściwości.
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 zwracające wartość
Metoda mutating może również zwracać wartość podczas zmiany stanu.
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)Biblioteka standardowa używa mutating
Metody takie jak append w Array są metodami mutating, dlatego do ich wywołania potrzebna jest tablica zadeklarowana jako var.
var nums = [1, 2]
nums.append(3)
print(nums)mutating i stan obliczany
Wewnątrz metody mutating można aktualizować stan pochodny, zachowując spójność niezmienników.
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)Kolejność ma znaczenie
Instrukcje wewnątrz metody mutating są wykonywane od góry do dołu, więc późniejsze wiersze widzą wcześniejsze zmiany.
struct Accumulator {
var total = 0
mutating func process() {
total += 1
total *= 10
}
}
var a = Accumulator()
a.process()
print(a.total)Klasy nie potrzebują mutating
Typy referencyjne (class) mogą modyfikować właściwości bez tego słowa kluczowego, ponieważ nie są typami wartości.
class Box {
var value = 0
func bump() { value += 1 }
}
let box = Box()
box.bump()
print(box.value)Szybkie sprawdzenie
Sprawdź działanie słowa kluczowego mutating.
Podsumowanie
Metodę instancji struktury lub enuma należy oznaczyć jako mutating, gdy zmienia przechowywane właściwości lub, w przypadku enumów, przełącza przypadek. Takich metod nie można wywoływać na instancjach let. Klasy, jako typy referencyjne, nigdy tego nie potrzebują.
struct C { var v = 0; mutating func inc() { v += 1 } }
var c = C()
c.inc()
print(c.v)Ucz się Swift dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 122
- Lekcje
- 409
Często zadawane pytania
Czy lekcja „Słowo kluczowe mutating” jest bezpłatna?
Tak — pełny tekst „Słowo kluczowe mutating” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Słowo kluczowe mutating”?
Pisanie metod modyfikujących stan struktur i wyliczeń. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Słowo kluczowe mutating”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Typy wartości i niezmienność
- Słowo kluczowe mutating
- mutating i ponowne przypisanie self
- Alternatywy dla mutating