القيم الافتراضية لمعلمات الدوال
امنح المعلمات قيمًا افتراضية لتبسيط مواضع الاستدعاء.
القيم الافتراضية لمعلمات الدوال درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
ما المقصود بالمعاملات الافتراضية
يمكن أن يمتلك معامل الدالة قيمة افتراضية. ويجوز للمتصلين حذف هذا الوسيط، فتملأ Swift القيمة الافتراضية تلقائيًا.
func greet(name: String = "Guest") {
print("Hello, \(name)")
}
greet()
greet(name: "Ada")التصريح عن قيمة افتراضية
تسند قيمة افتراضية بعد نوع المعامل باستخدام =. ولا تُستخدم القيمة الافتراضية إلا عندما لا يمرر المتصل ذلك الوسيط.
func power(base: Int, exponent: Int = 2) -> Int {
var result = 1
for _ in 0..<exponent { result *= base }
return result
}
print(power(base: 5))
print(power(base: 5, exponent: 3))قيم افتراضية متعددة
يمكنك منح عدة معاملات قيمًا افتراضية. ويستطيع المتصلون تجاوز القيم التي يريدون تغييرها فقط.
func makeBox(width: Int = 1, height: Int = 1) -> Int {
return width * height
}
print(makeBox())
print(makeBox(width: 4))الخلط بين المعاملات المطلوبة والافتراضية
لا تمتلك المعاملات المطلوبة قيمة افتراضية، بينما تمتلكها المعاملات الافتراضية. ضع المعاملات المطلوبة أولًا حتى يتمكن المتصلون من حذف القيم الافتراضية اللاحقة بسهولة.
func send(message: String, urgent: Bool = false) {
print("\(urgent ? "URGENT: " : "")\(message)")
}
send(message: "Hi")
send(message: "Fire!", urgent: true)القيم الافتراضية تقلل الدوال المحملة بشكل زائد
قبل ظهور المعاملات الافتراضية، قد تكتب عدة دوال محملة بشكل زائد. أما دالة واحدة ذات قيم افتراضية فتستبدلها جميعًا.
func connect(host: String, port: Int = 80) {
print("\(host):\(port)")
}
connect(host: "example.com")
connect(host: "example.com", port: 8080)تجاوز أي مجموعة فرعية
يمكنك تجاوز قيمة افتراضية واحدة مع الإبقاء على القيم الأخرى، ما دمت تستخدم تسميات الوسائط لتوضيح المقصود.
func style(size: Int = 12, bold: Bool = false, italic: Bool = false) {
print("\(size) bold:\(bold) italic:\(italic)")
}
style(bold: true)يمكن أن تكون القيم الافتراضية تعبيرات
يمكن أن تكون القيمة الافتراضية أي تعبير من النوع الصحيح، ويُقيَّم هذا التعبير عند حذف الوسيط.
func now(stamp: Int = 1000 + 1) {
print(stamp)
}
now()
now(stamp: 5)القيمة الافتراضية لقيمة اختيارية
من الأنماط الشائعة جعل قيمة معامل اختياري افتراضيًا هي nil، مما يتيح للمتصلين تخطيه بالكامل.
func log(_ text: String, tag: String? = nil) {
print("[\(tag ?? "general")] \(text)")
}
log("Started")
log("Saved", tag: "db")الدمج مع nil
تعمل المعاملات الافتراضية و?? معًا بشكل جيد: اقبل قيمة اختيارية، ثم استخدم الدمج مع nil داخل جسم الدالة.
func price(amount: Int? = nil) -> Int {
return amount ?? 10
}
print(price())
print(price(amount: 25))القيم الافتراضية في المُهيئات
تعمل الميزة نفسها في مُهيئات البُنى، مما يتيح لك إنشاء كائنات ذات قيم افتراضية منطقية.
struct Settings {
var volume: Int
init(volume: Int = 50) {
self.volume = volume
}
}
print(Settings().volume)
print(Settings(volume: 80).volume)فائدة الوضوح
تجعل المعاملات الافتراضية مواضع استدعاء الدوال أقصر، وتوضح الحالة الشائعة، مع الاستمرار في إتاحة التحكم الكامل عند الحاجة.
func repeatText(_ text: String, times: Int = 1) {
for _ in 0..<times { print(text) }
}
repeatText("Hi")
repeatText("Yo", times: 2)تحقق سريع
اختبر المعاملات الافتراضية.
مراجعة: القيم الافتراضية في معاملات الدوال
تتيح قيم المعاملات الافتراضية للمتصلين حذف الوسائط. صرّح عنها باستخدام = بعد النوع، وامزجها مع المعاملات المطلوبة، واجمعها مع ?? أو القيم الاختيارية لإنشاء واجهات برمجية مرنة.
func tax(amount: Int, rate: Int = 10) -> Int {
return amount + amount * rate / 100
}
print(tax(amount: 100))الأسئلة الشائعة
هل درس «القيم الافتراضية لمعلمات الدوال» مجاني؟
نعم — نص درس «القيم الافتراضية لمعلمات الدوال» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «القيم الافتراضية لمعلمات الدوال»؟
امنح المعلمات قيمًا افتراضية لتبسيط مواضع الاستدعاء. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «القيم الافتراضية لمعلمات الدوال»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عامل الدمج مع nil
- تسلسل القيم الافتراضية
- القيم الافتراضية لمعلمات الدوال
- الفهارس الفرعية الافتراضية للقواميس