Swift Academy · Ders

Sıralı Türlerle Durum Makinelerini Modelleştirme

Uygulama durumu geçişlerini Swift sıralı türleriyle güvenli biçimde temsil edin.

4. ders / 412 adım

Sıralı Türlerle Durum Makinelerini Modelleştirme, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. 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.

Hoş Geldiniz

Enum'lar, sonlu durum makinelerini modellemek için idealdir. Her durum bir durumu temsil eder; geçişler bir sonraki durumu döndüren işlevlerdir. Bu yaklaşım, geçersiz durumların temsil edilememesini sağlar.

Basit Durum Enum'u

```swift enum TrafficLight { case red, yellow, green func next() -> TrafficLight { switch self { case .red: return .green case .green: return .yellow case .yellow: return .red } } } var light = TrafficLight.red light = light.next() // .green ```

İlişkili Veriler İçeren Durumlar

```swift enum LoadState { case idle case loading(progress: Double) case loaded(T) case failed(Error) } var state: LoadState<[String]> = .idle state = .loading(progress: 0.5) state = .loaded(["alice","bob"]) ```

Geçiş İşlevi

```swift func transition(_ state: LoadState, event: AppEvent) -> LoadState { switch (state, event) { case (.idle, .startFetch): return .loading(progress: 0) case (.loading, .progress(let p)): return .loading(progress: p) case (.loading, .success(let d)): return .loaded(d) case (.loading, .error(let e)): return .failed(e) default: return state } } ```

Enum Durum Makineleri Neden Kullanılır

Avantajları: • Tüm durumları kapsayan seçim — derleyici tüm durumların ele alınmasını zorunlu kılar • Geçersiz birleşimler mümkün değildir (ör. veri olmadan `loaded`) • Durum bir değerdir — sınanması, kopyalanması ve günlüğe kaydedilmesi kolaydır • Kullanıcı arayüzü duruma göre seçim yapıp uygun görünümü oluşturabilir

Durumdan Kullanıcı Arayüzü Oluşturma

```swift func render(_ state: LoadState<[User]>) { switch state { case .idle: showEmptyView() case .loading(let p): showProgress(p) case .loaded(let users): showList(users) case .failed(let err): showError(err) } } ```

Oynatıcı Durum Makinesi

```swift enum PlayerState { case stopped case playing(track: String, position: TimeInterval) case paused(track: String, position: TimeInterval) } ``` Yalnızca `playing` ve `paused` bir parça taşır — `stopped` taşımaz; bu da modeli kendi kendini açıklayıcı hâle getirir.

Geçersiz Geçişleri Önleme

```swift extension PlayerState { mutating func play(track: String) { guard case .stopped = self else { return } self = .playing(track: track, position: 0) } mutating func pause() { if case .playing(let t, let p) = self { self = .paused(track: t, position: p) } } } ```

Durum Makinelerini Sınama

```swift func testLight() { var l = TrafficLight.red assert(l.next() == .green) assert(l.next().next() == .yellow) } ``` Saf geçiş işlevlerine sahip durum makineleri birim sınamaları için doğrudan uygundur; sahte nesne gerekmez.

Durum Makinelerini Birleştirme

Büyük uygulamalarda çoğu zaman birden fazla durum makinesi birlikte çalışır: ```swift struct AppState { var auth: AuthState var data: LoadState<[Article]> var ui: UIState } ``` Bunları Flux/Redux tarzı mimariler için tek bir kök durum yapısında birleştirin.

Kısa Sınama

Enum tabanlı durum makinelerini derleyici açısından güvenli yapan nedir?

Özet

Temel çıkarımlar: • Her durum bir durumdur; geçişler sonraki durumu döndüren işlevlerdir • İlişkili değerler duruma özgü verileri taşır • Tüm durumları kapsayan seçim, derleyicinin zorunlu kıldığı durum işlemeyi sağlar • Saf geçiş işlevlerinin birim sınaması kolaydır • Birden fazla durum makinesini kök durum yapısında birleştirin Kurs tamamlandı! Sıradaki konu: protokol birleştirme.
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

“Sıralı Türlerle Durum Makinelerini Modelleştirme” dersi ücretsiz mi?

Evet — “Sıralı Türlerle Durum Makinelerini Modelleştirme” 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.

“Sıralı Türlerle Durum Makinelerini Modelleştirme” dersinde ne öğreneceğim?

Uygulama durumu geçişlerini Swift sıralı türleriyle güvenli biçimde temsil edin. 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 4. dersidir.

“Sıralı Türlerle Durum Makinelerini Modelleştirme” 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. Ham Değerler ve CaseIterable
  2. Zengin Veriler için İlişkili Değerler
  3. Dolaylı Sıralı Türler ve Özyinelemeli Yapılar
  4. Sıralı Türlerle Durum Makinelerini Modelleştirme
← Swift Academy Sayfasına Dön