result builder ile mini DSL'ler oluşturma
@resultBuilder kullanarak küçük bir DSL oluşturun: builder işlevlerini tanımlayın, blokları birleştirin ve okunabilir yapılandırma için koşulları/döngüleri destekleyin.
result builder ile mini DSL'ler oluşturma, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 3 dersinin 1. 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.
Sonuç oluşturucuları neden kullanılır?
Amaç: Okunabilir blokları @resultBuilder kullanarak değerlere dönüştürün. Öğelerin nasıl birleştirileceğini siz tanımlarsınız; çağrı konumu temiz ve bildirimsel kalır.
Küçük bir oluşturucu
Öğeleri birleştirmek için buildBlock tanımlar ve temiz bir bloktan dize dizisi döndüren bir arayüz (lines{}) sunarız.
@resultBuilder
struct StringListBuilder {
static func buildBlock(_ parts: String...) -> [String] { parts }
// Optional support for conditionals/arrays:
static func buildEither(first: [String]) -> [String] { first }
static func buildEither(second: [String]) -> [String] { second }
static func buildArray(_ components: [[String]]) -> [String] { components.flatMap { $0 } }
}
// DSL entry function using the builder
func lines(@StringListBuilder _ content: () -> [String]) -> [String] {
content()
}
// Usage: create an array of strings with a block
let list = lines {
"Hello"
"Swift"
"Builders"
}
print(list)Oluşturucularda koşullar
buildEither ile blok içinde if/else kullanılabilir. Hangi dalın katkı sağlayacağına oluşturucu karar verir.
let showExtra = true
let conditional = lines {
"Base"
if showExtra {
"Extra"
} else {
"Hidden"
}
}
print(conditional) // ["Base","Extra"]Oluşturucularda döngüler
buildArray, döngülerden (for/map) gelen sonuçları toplar; böylece yinelenen parçalar doğal biçimde üretilebilir.
let items = ["a","b","c"]
let looped = lines {
for x in items { x.uppercased() } // contributes ["A","B","C"]
}
print(looped)Tek değerli oluşturucu
Oluşturucular tek bir değer üretebilir. Burada koşulları kullanmaya devam ederek parçaları tek bir dizede birleştiriyoruz.
@resultBuilder
struct TextBuilder {
static func buildBlock(_ parts: String...) -> String {
parts.joined(separator: " ")
}
static func buildEither(first: String) -> String { first }
static func buildEither(second: String) -> String { second }
static func buildArray(_ components: [String]) -> String {
components.joined(separator: " ")
}
}
func text(@TextBuilder _ content: () -> String) -> String { content() }
// Compose a small sentence with conditions
let loggedIn = false
let sentence = text {
"[INFO]"
"Welcome,"
if loggedIn { "user!" } else { "guest." }
}
print(sentence) // "[INFO] Welcome, guest."Tasarım ipuçları
İpuçları:
- DSL'leri en küçük boyutta ve odaklı tutun.
- Oluşturucunuzla açıklama eklenmiş, tek ve açık bir giriş işlevi sağlayın.
- Yalnızca ihtiyacınız olanları destekleyin:
buildBlock,buildEither,buildArray. - Blok içinde hangi ifadelerin kullanılabileceğini belgeleyin.
Sonuç oluşturucunun amacı
Hızlı kontrol: Bir sonuç oluşturucunun temel yararı nedir?
Özet
Özet: Parçaları birleştirmek için @resultBuilder yöntemleri tanımlayın, küçük bir giriş arayüzü sunun ve if/for desteğiyle okunabilir blokları birleştirin.
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
“result builder ile mini DSL'ler oluşturma” dersi ücretsiz mi?
Evet — “result builder ile mini DSL'ler oluşturma” 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.
“result builder ile mini DSL'ler oluşturma” dersinde ne öğreneceğim?
@resultBuilder kullanarak küçük bir DSL oluşturun: builder işlevlerini tanımlayın, blokları birleştirin ve okunabilir yapılandırma için koşulları/döngüleri destekleyin. 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 1. dersidir.
“result builder ile mini DSL'ler oluşturma” 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
- result builder ile mini DSL'ler oluşturma
- Kapsamlı API'ler ve okunabilirlik kalıpları
- UI çatısı kullanmadan pratik örnekler