Swift Academy · Ders

mutating Anahtar Sözcüğü

struct ve enum durumunu değiştiren yöntemler yazın.

2. ders / 413 adım

mutating Anahtar Sözcüğü, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Yöntemler Varsayılan Olarak Değişiklik Yapamaz

Bir struct örnek yöntemi, mutating olarak işaretlenmedikçe yapının depolanan özelliklerini değiştiremez.

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

Değişiklik Yapma Neden Gereklidir

Yapılar değer türleri olduğundan derleyici, değişikliğe açıkça izin vermenizi ve böylece değişikliğin açıkça belirtilmesini gerektirir.

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

Değişiklik Yapmayan Yöntemler

Yalnızca özellikleri okuyan bir yöntemin mutating bildirimine ihtiyacı yoktur.

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

Numaralandırmada Değişiklik Yapma

Numaralandırmalar da örneği farklı bir duruma geçiren mutating yöntemlere sahip olabilir.

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

let Üzerinde Çağrılamaz

Bir sabit (let) örneği üzerinde mutating bir yöntemi çağıramazsınız; bunu yapmak derleme hatasına neden olur.

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

Birden Çok Özelliği Değiştirme

Tek bir mutating yöntemi aynı anda birkaç özelliği değiştirebilir.

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)

Değişiklik Yaparak Değer Döndürme

mutating bir yöntem, durumu değiştirirken aynı zamanda bir değer de döndürebilir.

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)

Standart Kitaplıkta Değişiklik Yapma

Array üzerindeki append gibi yöntemler mutating özelliğindedir; bu nedenle bunları çağırmak için var dizisine ihtiyacınız vardır.

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

Değişiklik Yapma ve Hesaplanan Durum

Türetilmiş durumu bir değişiklik yapan yöntem içinde güncelleyerek değişmezleri tutarlı tutabilirsiniz.

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)

Sıra Önemlidir

Değişiklik yapan bir yöntemin içindeki deyimler yukarıdan aşağıya çalışır; bu nedenle sonraki satırlar önceki değişiklikleri görür.

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

Sınıflar Değişiklik Yapma Bildirimine İhtiyaç Duymaz

Başvuru türleri (class), değer türü olmadıkları için özellikleri anahtar sözcük kullanmadan değiştirebilir.

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

Kısa Sınama

Değişiklik yapma anahtar sözcüğünü sınayın.

Özet

Bir yapı veya numaralandırma örneği yöntemi, saklanan özellikleri değiştirdiğinde (numaralandırmalar için durumu değiştirdiğinde) mutating olarak işaretleyin. Bu tür yöntemler let örnekleri üzerinde çağrılamaz. Başvuru türleri olan sınıflar buna hiçbir zaman ihtiyaç duymaz.

struct C { var v = 0; mutating func inc() { v += 1 } }
var c = C()
c.inc()
print(c.v)
Başlamak ücretsiz

Yapay zeka eğitmeniyle Swift öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
122
Dersler
409

Sıkça Sorulan Sorular

“mutating Anahtar Sözcüğü” dersi ücretsiz mi?

Evet — “mutating Anahtar Sözcüğü” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“mutating Anahtar Sözcüğü” dersinde ne öğreneceğim?

struct ve enum durumunu değiştiren yöntemler yazın. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“mutating Anahtar Sözcüğü” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Değer Türleri ve Değişmezlik
  2. mutating Anahtar Sözcüğü
  3. Mutating ve self Yeniden Ataması
  4. Değiştirmeyen Alternatifler
← Swift Academy Sayfasına Dön