0Pricing
Swift Academy · Ders

Comparable ve Sıralama

Sıralama için < ile düzen tanımlayın.

Comparable ve Sıralama, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 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 4 dersten oluşur.

Karşılaştırılabilir Nedir?

Comparable, bir türe sıralama operatörleri sağlar: <, <=, >, >=. Uyumluluk sağlamak, doğrudan sorted(), min() ve max() işlevlerini çağırmanıza olanak tanır.

< ile Uyumluluk

Yalnızca < operatörünü uygulamanız gerekir; diğerleri türetilir. (Equatable da gereklidir.)

struct Version: Comparable {
    let major: Int
    static func < (l: Version, r: Version) -> Bool { l.major < r.major }
}
print(Version(major: 1) < Version(major: 2))  // true

Karşılaştırılabilir Bir Türü Sıralama

Karşılaştırılabilir olduğunda sorted() için kapanış bloğu gerekmez:

struct Score: Comparable {
    let points: Int
    static func < (l: Score, r: Score) -> Bool { l.points < r.points }
}
let sorted = [Score(points: 3), Score(points: 1), Score(points: 2)].sorted()
print(sorted.map { $0.points })  // [1, 2, 3]

min ve max Ücretsiz Olarak Gelir

Karşılaştırılabilirlik, toplama yardımcılarını da etkinleştirir:

struct Temp: Comparable {
    let c: Int
    static func < (l: Temp, r: Temp) -> Bool { l.c < r.c }
}
let temps = [Temp(c: 20), Temp(c: 5), Temp(c: 30)]
print(temps.min()!.c, temps.max()!.c)  // 5 30

Birden Çok Anahtara Göre Sıralama

Birkaç alan arasında eşitliği bozmak için alanları < içinde öncelik sırasına göre karşılaştırın ve demetleri kullanın; Swift, demetleri sözlük sırasına göre karşılaştırır.

Demet Karşılaştırma Tekniği

Soyada, ardından ada göre karşılaştırın:

struct Person: Comparable {
    let last: String
    let first: String
    static func < (l: Person, r: Person) -> Bool {
        (l.last, l.first) < (r.last, r.first)
    }
}
let p = [Person(last: "Lee", first: "Bo"), Person(last: "Lee", first: "An")].sorted()
print(p.map { $0.first })  // ["An", "Bo"]

Karşılaştırılabilir Olmadan Sıralama

Tür karşılaştırılabilir olmasa bile her zaman sondaki kapanış bloğuyla sıralama yapabilirsiniz:

struct Item { let name: String; let qty: Int }
let items = [Item(name: "B", qty: 2), Item(name: "A", qty: 5)]
let byQty = items.sorted { $0.qty > $1.qty }
print(byQty.map { $0.name })  // ["A", "B"]

Azalan Sıralama

Karşılaştırmayı tersine çevirin veya .reversed() işlevini çağırın:

let nums = [3, 1, 4, 1, 5]
print(nums.sorted(by: >))         // [5, 4, 3, 1, 1]
print(nums.sorted().reversed())   // [5, 4, 3, 1, 1]

sorted ile sort Karşılaştırması

sorted() yeni bir dizi döndürür; sort() diziyi yerinde değiştirir (bir var olması gerekir):

var nums = [3, 1, 2]
nums.sort()
print(nums)  // [1, 2, 3]
let copy = [3, 1, 2].sorted()
print(copy)  // [1, 2, 3]

Yeterince Kararlı Sıralama

Swift sıralamasının Swift 5'ten beri kararlı olması garanti edilir: Eşit öğeler göreli sıralarını korur. Öngörülebilir çok geçişli sıralamalar için buna güvenebilirsiniz:

let words = ["bb", "a", "cc", "d"]
let byLen = words.sorted { $0.count < $1.count }
print(byLen)  // ["a", "d", "bb", "cc"]  -- "a" before "d", "bb" before "cc"

Anahtar Yoluna Göre Sıralama

Tüm türü uyumlu hâle getirmeden, herhangi bir özelliği okuyan bir kapanış bloğuyla sıralama yapabilirsiniz:

struct Player { let name: String; let score: Int }
let players = [Player(name: "A", score: 30), Player(name: "B", score: 50)]
let ranked = players.sorted { $0.score > $1.score }
print(ranked.map { $0.name })  // ["B", "A"]

Hızlı Kontrol

Comparable uyumluluğu için hangi tek operatörü uygulamanız gerekir?

Özet

Karşılaştırılabilirliği öğrendiniz:

  • Comparable, sıralama operatörlerini sağlar; yalnızca < operatörünü uygulayın
  • Kapanış bloğu olmadan sorted(), min() ve max() işlevlerini etkinleştirir
  • Demet karşılaştırması, birden çok anahtara göre kolay sıralama sağlar
  • sorted() yeni bir değer döndürür; sort() değeri değiştirir; sıralama kararlıdır

Sıradaki konu: özel eşitlik kuralları.

Sıkça Sorulan Sorular

“Comparable ve Sıralama” dersi ücretsiz mi?

Evet — “Comparable ve Sıralama” 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.

“Comparable ve Sıralama” dersinde ne öğreneceğim?

Sıralama için < ile düzen tanımlayı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 3. dersidir.

“Comparable ve Sıralama” 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. Otomatik Oluşturulan Equatable
  2. Hashable ve hash(into:)
  3. Comparable ve Sıralama
  4. Özel Eşitlik Anlamı
← Swift Academy Sayfasına Dön