المعاملات الموضعية الاختيارية
جزء من قسم Fundamentals في رحلة Dart على Coddy — الدرس 72 من 94.
المعاملات الموضعية الاختيارية في لغة Dart تتيح لك إنشاء دوال تكون فيها بعض المعاملات اختيارية. يمكنك تعريفها عن طريق وضع المعاملات داخل أقواس مربعة [].
أنشئ دالة بمعلمات موضعية اختيارية:
void greet(String name, [String? greeting]) {
if (greeting != null) {
print('$greeting, $name!');
} else {
print('Hello, $name!');
}
}
void main() {
greet('Dart');
greet('Dart', 'Welcome');
}بعد تنفيذ الكود أعلاه، ستكون المخرجات:
Hello, Dart!
Welcome, Dart!يمكنك الحصول على عدة معاملات اختيارية:
int calculateTotal(int quantity, [int price = 10, int tax = 2]) {
return quantity * price + tax;
}
void main() {
print(calculateTotal(5));
print(calculateTotal(5, 20));
print(calculateTotal(5, 20, 5));
}بعد تنفيذ الكود أعلاه، ستكون المخرجات:
52
102
105التحدي
مبتدئفي هذا التحدي، ستتدرب على استخدام المعاملات الموضعية الاختيارية (optional positional parameters) في دوال Dart. تسمح لك المعاملات الموضعية الاختيارية بإنشاء دوال تكون فيها بعض المعاملات اختيارية.
أكمل دالة greet أدناه التي تأخذ معامل اسم مطلوب ومعامل لقب اختياري. إذا تم توفير اللقب، يجب أن تعيد الدالة تحية تحتوي على كل من اللقب والاسم. إذا لم يتم توفير لقب، يجب أن تستخدم الاسم فقط.
المخرجات المتوقعة:
Hello, John!
Hello, Dr. Smith!ورقة مرجعية
يتم تعريف المعلمات الموضعية الاختيارية في Dart عن طريق وضع المعلمات داخل أقواس مربعة []:
void greet(String name, [String greeting]) {
if (greeting != null) {
print('$greeting, $name!');
} else {
print('Hello, $name!');
}
}يمكنك الحصول على معلمات اختيارية متعددة بقيم افتراضية:
int calculateTotal(int quantity, [int price = 10, int tax = 2]) {
return quantity * price + tax;
}استدعِ الدوال ذات المعلمات الاختيارية من خلال توفير الوسائط المطلوبة فقط أو تضمين الوسائط الاختيارية:
greet('Dart'); // يستخدم السلوك الافتراضي
greet('Dart', 'Welcome'); // يستخدم المعلمة الاختيارية المقدمةجرّب بنفسك
void main() {
// هذه المتغيرات معرفة مسبقاً لك
String person1 = "John";
String person2 = "Smith";
String title = "Dr.";
// استدعِ الدالة greet بالاسم فقط
print(greet(person1));
// استدعِ الدالة greet بكل من الاسم و title
print(greet(person2, title));
}
// TODO: أكمل الدالة greet مع معامل title اختياري
// يجب أن يكون المعامل title اختيارياً (استخدم الأقواس المربعة [])
String greet(String name) {
// إذا تم توفير title، أرجع "Hello, {title} {name}!"
// إذا لم يتم توفير title، أرجع "Hello, {name}!"
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الثاني
معاملات المقارنةالمعامل المنطقي ANDالمعامل المنطقي ORالمعامل المنطقي NOTمعاملات فحص النوعملخص - إجراء المقارنات7التعامل مع النصوص (Strings)
دمج النصوص (String Concatenation)تضمين النصوص (String Interpolation)النصوص متعددة الأسطر (Multi-line Strings)خصائص النصوص (String Properties)دوال النصوص الأساسية (String Methods)10المجموعات - أساسيات الخرائط
ما هي الخرائط؟إنشاء خريطةالوصول إلى القيم عبر المفتاحأزواج المفتاح والقيمةالحصول على حجم الخريطةالحصول على المفاتيحالحصول على القيمالتحقق من وجود مفتاح2المتغيرات وأنواع البيانات الأساسية
ما هي المتغيرات؟النصوص (Strings)الأعداد الصحيحة (int)الأعداد العشرية (double)القيم المنطقية (bool)استنتاج النوع باستخدام 'var'المتغيرات النهائية (Final)المتغيرات الثابتة (Constant)قواعد التسميةأساسيات الـ Null Safetyملخص - التصريح عن المتغيرات8مسار التحكم - الحلقات التكرارية
حلقة 'for' التكراريةحلقة 'while' التكراريةحلقة 'do-while' التكراريةاستخدام 'break' في الحلقات التكراريةاستخدام 'continue' في الحلقات التكراريةملخص - تكرار الكود البرمجي3المعاملات - الجزء الأول
المعاملات الحسابيةالقسمة الصحيحةمعامل باقي القسمة (Modulo)الزيادة والنقصاناختصارات التعيينملخص - الحسابات البسيطة6تدفق التحكم - اتخاذ القرار
جملة 'if'جملة 'else'جملة 'else if'ملخص - القرارات البسيطةجمل 'if' المتداخلةجملة 'switch'9المجموعات - أساسيات القوائم
ما هي القوائم؟إنشاء قائمةالوصول عبر الفهرسالحصول على طول القائمةإضافة عناصرإزالة عناصرالتحقق مما إذا كانت القائمة فارغةالتكرار عبر القائمة12الدوال المتقدمة
المعاملات الموضعية الاختياريةالمعاملات المسماةالمعاملات المسماة المطلوبةالقيم الافتراضية للمعاملاتملخص - معاملات الدوال