0Pricing
Swift Academy · Ders

UI çatısı kullanmadan pratik örnekler

UI kullanmadan küçük ve yararlı DSL'ler yazın: yapılandırma dosyaları, basit sorgu oluşturucular, metin/Markdown üreticileri ve @resultBuilder içeren doğrulama işlem hatları.

UI çatısı kullanmadan pratik örnekler, 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.

Kullanıcı arayüzü dışı sonuç oluşturucuları

Kullanıcı arayüzünün ötesindeki birçok görev için kullanışlı DSL'ler oluşturabilirsiniz. config, sorgu, metin ve validation oluşturucuları hazırlayacağız. Her birini küçük ve odaklı tutun.

Yapılandırma oluşturucusu

Bir config oluşturucusu, basit demetleri bir sözlükte toplar. Çağrı noktaları düzenli ve kolayca taranabilir olur.

@resultBuilder
struct ConfigBuilder {
    static func buildBlock(_ parts: (String,String)...) -> [String:String] {
        var dict: [String:String] = [:]
        for (k,v) in parts { dict[k] = v }
        return dict
    }
}
func config(@ConfigBuilder _ body: () -> [String:String]) -> [String:String] { body() }

// Use it:
let cfg = config {
    ("ENV", "debug")
    ("API_URL", "https://api.example.com")
    ("RETRY", "3")
}
print(cfg["API_URL"] ?? "missing")

Sorgu oluşturucusu

Bir sorgu oluşturucusu, cümlecikleri AND ile birleştirir. Oluşturucu kancaları aracılığıyla if/else ve döngüleri destekleriz.

struct Where { let clauses: [String] }
@resultBuilder
struct WhereBuilder {
    static func buildBlock(_ parts: String...) -> Where { Where(clauses: parts) }
    static func buildArray(_ parts: [String]) -> Where { Where(clauses: parts) }
    static func buildEither(first: Where) -> Where { first }
    static func buildEither(second: Where) -> Where { second }
}
func whereClauses(@WhereBuilder _ body: () -> Where) -> Where { body() }

func select(_ table: String, where w: Where) -> String {
    let filter = w.clauses.isEmpty ? "" : " WHERE " + w.clauses.joined(separator: " AND ")
    return "SELECT * FROM \(table)\(filter);"
}

// Use:
let isProd = false
let q = select("users", where: whereClauses {
    "age > 18"
    if isProd { "status = 'active'" } else { "status <> 'deleted'" }
})
print(q)

Metin/Markdown oluşturucusu

Bir metin oluşturucusu tek bir String üretir. h2 ve bullet gibi yardımcılar bloğun okunabilir kalmasını sağlar.

@resultBuilder
struct TextBuilder {
    static func buildBlock(_ parts: String...) -> String { parts.joined(separator: "\n") }
    static func buildEither(first: String) -> String { first }
    static func buildEither(second: String) -> String { second }
    static func buildArray(_ parts: [String]) -> String { parts.joined(separator: "\n") }
}
func md(@TextBuilder _ body: () -> String) -> String { body() }

func h2(_ s: String) -> String { "## " + s }
func bullet(_ s: String) -> String { "- " + s }

let doc = md {
    h2("Release Notes")
    bullet("Faster build")
    bullet("Smaller binary")
}
print(doc)

Doğrulama oluşturucusu

validation rules toplayın, ardından bunları bir işlem hattı olarak çalıştırın. Blok bildirimsel kalır; yürütme daha sonra gerçekleşir.

struct ValidationResult { let ok: Bool; let messages: [String] }

typealias Rule = (String) -> String?   // nil = OK; otherwise error message

@resultBuilder
struct RulesBuilder {
    static func buildBlock(_ parts: Rule...) -> [Rule] { parts }
    static func buildArray(_ parts: [[Rule]]) -> [Rule] { parts.flatMap { $0 } }
}
func rules(@RulesBuilder _ body: () -> [Rule]) -> [Rule] { body() }

func validate(_ input: String, with rules: [Rule]) -> ValidationResult {
    var msgs: [String] = []
    for r in rules { if let m = r(input) { msgs.append(m) } }
    return ValidationResult(ok: msgs.isEmpty, messages: msgs)
}

// Use:
let rs = rules {
    { $0.isEmpty ? "Must not be empty" : nil }
    { $0.count < 3 ? "Too short" : nil }
}
let out = validate("hi", with: rs)
print(out.ok, out.messages)

Tasarım ipuçları

İpuçları:

  • buildBlock ile başlayın; yalnızca gerektiğinde seçim/dizi desteği ekleyin.
  • Üretilen türleri basit tutun: String, diziler, küçük yapılar.
  • Her DSL için bir giriş işlevi sağlayın (örneğin config, md).
  • İzin verilen ifadeleri ve kaçış kurallarını belgeleyin.

Kullanıcı arayüzü dışı oluşturucu kullanım alanı

Hızlı kontrol: Bir oluşturucu için sağlam bir kullanıcı arayüzü dışı kullanım seçin:

Özet

Özet: Sonuç oluşturucular yapılandırılmış girdiler—yapılandırmalar, sorgular, metin ve validation—için çok uygundur. Bunları en küçük boyutta, okunabilir ve iyi kapsamlandırılmış tutun.

Sıkça Sorulan Sorular

“UI çatısı kullanmadan pratik örnekler” dersi ücretsiz mi?

Evet — “UI çatısı kullanmadan pratik örnekler” 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.

“UI çatısı kullanmadan pratik örnekler” dersinde ne öğreneceğim?

UI kullanmadan küçük ve yararlı DSL'ler yazın: yapılandırma dosyaları, basit sorgu oluşturucular, metin/Markdown üreticileri ve @resultBuilder içeren doğrulama işlem hatları. 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.

“UI çatısı kullanmadan pratik örnekler” 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. result builder ile mini DSL'ler oluşturma
  2. Kapsamlı API'ler ve okunabilirlik kalıpları
  3. UI çatısı kullanmadan pratik örnekler
← Swift Academy Sayfasına Dön