Paylaşımı azaltmak için değer türleri
Yanlışlıkla paylaşımı önlemek için value types kullanmayı tercih edin: struct/enum'lar atamada kopyalanarak yalıtımı, öngörülebilirliği ve iş parçacığı güvenliğini destekler.
Paylaşımı azaltmak için değer türleri, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 3 dersinin 3. 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 3 dersten oluşur.
Değer türleri neden kullanılır?
Swift'teki yapılar ve numaralandırmalar değer türleridir: atama ve aktarma kopyalar oluşturur. Bu, yanlışlıkla paylaşımı azaltır ve durumu anlamayı kolaylaştırır.
Referans paylaşımı (sınıf)
Sınıflar referans türleridir: birden çok değişken aynı örneğe işaret edebilir; bu nedenle değişiklikler diğer adlara da yansır.
final class Bag {
var items: [String]
init(_ items: [String]) { self.items = items }
}
let a = Bag(["pen"])
let b = a // REF COPY: a and b refer to the same object
b.items.append("book")
print(a.items) // ["pen","book"] — mutated via b
print(b.items)Bağımsız kopyalar (yapı)
Yapılar atama sırasında kopyalanır. Her değişken kendi verisine sahiptir; değişiklikler yerel kalır.
struct Point { var x: Int; var y: Int }
var p1 = Point(x: 1, y: 2)
var p2 = p1 // VALUE COPY: independent
p2.x = 99
print(p1.x, p2.x) // 1, 99 — p1 unaffectedYazma sırasında kopyalama kullanan koleksiyonlar
Array/Dictionary/Set, yazma sırasında kopyalama kullanan değer türleridir. Benzersiz olmayan bir şekilde referans verilen bir diziyi değiştirdiğinizde Swift yeni bir kopya oluşturur.
var a1 = [1,2,3]
var a2 = a1 // copy-on-write handle
a2.append(4) // triggers copy if a1 is uniquely referenced
print(a1) // [1,2,3]
print(a2) // [1,2,3,4]Saf tarzda güncellemeler
Saf nitelikte API'ler tasarlayınız: bir değer kabul edip yeni bir değer döndürünüz. Çağıranlar beklenmedik paylaşılan değişikliklerden kaçınır.
struct Profile {
var name: String
var tags: [String]
}
func addTag(_ p: Profile, _ tag: String) -> Profile {
var copy = p // work on a value copy
copy.tags.append(tag) // caller gets a new updated value
return copy
}
let pA = Profile(name: "Ana", tags: [])
let pB = addTag(pA, "swift")
print(pA.tags) // []
print(pB.tags) // ["swift"]Doğru seçimi yapma
Yönergeler:
- Küçük, değişmez veya yalnızca yerel olarak değiştirilen veriler için yapı kullanmayı tercih ediniz.
- Kimlik, paylaşılan değiştirilebilir durum veya kalıtım gerekiyorsa sınıf kullanınız.
- Değer türleri paylaşımı azaltır ve eşzamanlılığı anlamayı daha güvenli hâle getirir.
Değer ve referans paylaşımı
Kısa kontrol: Değer türleri istenmeyen paylaşımı önlemeye neden yardımcı olur?
Özet
Özet: Yapılar ve numaralandırmalar değerlerdir. Paylaşılan değiştirilebilir durumu en aza indirmek için bunları kullanınız. Koleksiyonlar, değişikliklerin diğer sahiplerini şaşırtmaması için yazma sırasında kopyalama kullanır.
Sıkça Sorulan Sorular
“Paylaşımı azaltmak için değer türleri” dersi ücretsiz mi?
Evet — “Paylaşımı azaltmak için değer türleri” 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 3 dersten oluşur.
“Paylaşımı azaltmak için değer türleri” dersinde ne öğreneceğim?
Yanlışlıkla paylaşımı önlemek için value types kullanmayı tercih edin: struct/enum'lar atamada kopyalanarak yalıtımı, öngörülebilirliği ve iş parçacığı güvenliğini destekler. 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, 3 dersinin 3. dersidir.
“Paylaşımı azaltmak için değer türleri” 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
- ARC temelleri: strong / weak / unowned
- Saklama döngüleri ve weak/unowned ile kırma
- Paylaşımı azaltmak için değer türleri