إنشاء DSLs مصغّرة باستخدام بُناة النتائج
أنشئ DSL صغيرة باستخدام @resultBuilder : عرّف دوال الباني، وركّب الكتل، وادعم الشروط والحلقات لإنشاء مقروء.
إنشاء DSLs مصغّرة باستخدام بُناة النتائج درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 3 دروس في المجموع.
لماذا منشئات النتائج؟
الهدف: تحويل الكتل المقروءة إلى قيم باستخدام @resultBuilder. تحدد كيفية دمج العناصر، بينما يظل موضع الاستدعاء نظيفًا وتصريحيًا.
منشئ صغير
نعلن عن buildBlock لضم العناصر، ونوفّر واجهة API (lines{}) تُرجع مصفوفة من السلاسل النصية من كتلة نظيفة.
@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)الشروط في المنشئات
باستخدام buildEither، تعمل بنية if/else داخل الكتلة. ويحدد المنشئ الفرع الذي يساهم في النتيجة.
let showExtra = true
let conditional = lines {
"Base"
if showExtra {
"Extra"
} else {
"Hidden"
}
}
print(conditional) // ["Base","Extra"]الحلقات في المنشئات
يجمع buildArray النتائج من الحلقات (for/map)، بحيث يمكن إصدار الأجزاء المتكررة بصورة طبيعية.
let items = ["a","b","c"]
let looped = lines {
for x in items { x.uppercased() } // contributes ["A","B","C"]
}
print(looped)منشئ القيمة المفردة
يمكن للمنشئات إخراج قيمة مفردة. نضم هنا الأجزاء في سلسلة نصية واحدة، مع الاستمرار في استخدام الشروط.
@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."نصائح التصميم
نصائح:
- أبقِ DSLs صغيرة ومركّزة.
- وفّر دالة دخول واضحة واحدة، وموسومة بمنشئك.
- لا تدعم إلا ما تحتاج إليه:
buildBlockوbuildEitherوbuildArray. - وثّق العبارات المسموح بها داخل الكتلة.
غرض منشئ النتائج
تحقّق سريعًا: ما الفائدة الأساسية لمنشئ النتائج؟
خلاصة
خلاصة: عرّف أساليب @resultBuilder لدمج الأجزاء، ووفّر واجهة دخول صغيرة، وأنشئ كتلًا مقروءة قابلة للتركيب مع دعم if/for.
تعلم Swift مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 122
- الدروس
- 409
الأسئلة الشائعة
هل درس «إنشاء DSLs مصغّرة باستخدام بُناة النتائج» مجاني؟
نعم — نص درس «إنشاء DSLs مصغّرة باستخدام بُناة النتائج» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 3 دروس في المجموع.
ماذا ستتعلم في «إنشاء DSLs مصغّرة باستخدام بُناة النتائج»؟
أنشئ DSL صغيرة باستخدام @resultBuilder : عرّف دوال الباني، وركّب الكتل، وادعم الشروط والحلقات لإنشاء مقروء. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «إنشاء DSLs مصغّرة باستخدام بُناة النتائج»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إنشاء DSLs مصغّرة باستخدام بُناة النتائج
- واجهات برمجة محددة النطاق وأنماط قابلية القراءة
- أمثلة عملية من دون أطر واجهة المستخدم