0Pricing
Swift Academy · Leçon

Exemples pratiques sans frameworks d’interface utilisateur

Écrivez de petits DSL utiles sans interface utilisateur : fichiers de configuration, constructeurs de requêtes simples, générateurs de texte/Markdown et pipelines de validation avec @resultBuilder .

Exemples pratiques sans frameworks d’interface utilisateur est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 3 leçons au total.

Créateurs de résultats hors interface utilisateur

Vous pouvez créer des DSL pratiques pour de nombreuses tâches au-delà de l'interface utilisateur. Nous allons concevoir des créateurs de config, de requêtes, de texte et de validation. Gardez chacun d'eux petit et ciblé.

Créateur de config

Un créateur de config rassemble des tuples simples dans un dictionnaire. Les sites d'appel sont nets et faciles à parcourir.

@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")

Créateur de requêtes

Un créateur de requêtes joint les clauses avec AND. Nous prenons en charge if/else et les boucles grâce aux points d'extension du créateur.

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)

Créateur de texte/Markdown

Un créateur de texte produit une seule valeur String. Des fonctions auxiliaires comme h2 et bullet gardent le bloc lisible.

@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)

Créateur de validation

Rassemblez les règles de validation, puis exécutez-les dans une chaîne de traitement. Le bloc reste déclaratif ; l'exécution a lieu ultérieurement.

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)

Conseils de conception

Conseils :

  • Commencez par buildBlock ; n'ajoutez les branches et les tableaux qu'en cas de besoin.
  • Gardez les types produits simples : String, tableaux et petites structures.
  • Fournissez une fonction d'entrée par DSL (par exemple, config ou md).
  • Documentez les instructions autorisées et les règles d'échappement.

Cas d'utilisation d'un créateur hors interface utilisateur

Vérification rapide : choisissez une utilisation pertinente d'un créateur hors interface utilisateur :

Récapitulatif

Récapitulatif : les créateurs de résultats sont particulièrement adaptés aux entrées structurées : configurations, requêtes, texte et validation. Gardez-les minimaux, lisibles et bien délimités.

Questions Fréquemment Posées

La leçon « Exemples pratiques sans frameworks d’interface utilisateur » est-elle gratuite ?

Oui — le texte complet de « Exemples pratiques sans frameworks d’interface utilisateur » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Exemples pratiques sans frameworks d’interface utilisateur » ?

Écrivez de petits DSL utiles sans interface utilisateur : fichiers de configuration, constructeurs de requêtes simples, générateurs de texte/Markdown et pipelines de validation avec @resultBuilder . Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 3.

Combien de temps prend la leçon « Exemples pratiques sans frameworks d’interface utilisateur » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Créer des mini-DSL avec les générateurs de résultats
  2. API à portée limitée et modèles de lisibilité
  3. Exemples pratiques sans frameworks d’interface utilisateur
← Retour à Swift Academy