🔹 ما هي الدوال (Functions)؟
الدالة (Function) في Dart هي كتلة من التعليمات البرمجية تُستخدم لأداء مهمة معينة. تساعد الدوال على إعادة استخدام الكود، تقليل التكرار، وجعل الكود أكثر تنظيمًا وسهولة في الصيانة.
🔹 إنشاء دالة في Dart
الصيغة العامة لتعريف دالة:
returnType functionName(parameters) {
// كود الدالة
return value; // اختياري
}
Dart📌 شرح الصيغة:
returnType
هو نوع البيانات التي ستُرجعها الدالة (مثلint
,String
,void
, إلخ).functionName
هو اسم الدالة.parameters
هي القيم المدخلة (اختيارية).return value
تُستخدم لإرجاع قيمة (اختياري).
1️⃣ دالة بدون إرجاع (void
) وبدون معاملات
🔹 هذه الدالة تنفذ كودًا معينًا لكنها لا تُرجع أي قيمة.
مثال: طباعة رسالة
void sayHello() {
print('مرحبا بك في Dart!');
}
void main() {
sayHello(); // استدعاء الدالة
}
Dart🔹 الناتج:
2️⃣ دالة تُرجع قيمة (return
)
🔹 يمكن للدالة إرجاع قيمة معينة باستخدام return
.
مثال: حساب مجموع عددين
int sum(int a, int b) {
return a + b;
}
void main() {
int result = sum(5, 3);
print('المجموع: $result');
}
Dart🔹 الناتج:
3️⃣ دالة تحتوي على معاملات (Parameters
)
🔹 يمكن تمرير معاملات (Arguments) إلى الدالة عند استدعائها.
مثال: دالة تحسب مربع رقم
int square(int number) {
return number * number;
}
void main() {
print(square(4)); // 16
print(square(7)); // 49
}
Dart4️⃣ دالة بمعاملات اختيارية (Optional Parameters
)
🔹 يمكن جعل بعض المعاملات اختيارية باستخدام الأقواس [ ]
.
مثال: دالة تحيي المستخدم باسم اختياري
void greet([String name = 'ضيف']) {
print('مرحبا، $name!');
}
void main() {
greet(); // مرحبا، ضيف!
greet('Ali'); // مرحبا، Ali!
}
Dart5️⃣ دالة تحتوي على معاملات مسماة (Named Parameters
)
🔹 تُستخدم {}
لجعل المعاملات مسماة (Named Parameters) بحيث يمكن تمريرها بترتيب عشوائي.
مثال: دالة تحسب محيط المستطيل
double perimeter({double length = 1, double width = 1}) {
return 2 * (length + width);
}
void main() {
print(perimeter(length: 5, width: 3)); // 16
print(perimeter(width: 4, length: 2)); // 12
}
Dart6️⃣ دالة تحتوي على معامل مسمى إجباري (required
)
🔹 عند استخدام required
، يصبح تمرير هذا المعامل إجباريًا عند استدعاء الدالة.
مثال: حساب مساحة مستطيل بمعاملات إجبارية
double area({required double length, required double width}) {
return length * width;
}
void main() {
print(area(length: 5, width: 3)); // 15
}
Dart7️⃣ دالة مختصرة (Arrow Function
)
🔹 تُستخدم الأسهم (=>
) لإنشاء دوال مختصرة عند وجود سطر واحد فقط في جسم الدالة.
مثال: دالة لحساب ضعف العدد
int doubleNumber(int num) => num * 2;
void main() {
print(doubleNumber(4)); // 8
}
Dart🔹 تعادل هذه الدالة الكود التالي ولكن بشكل مختصر:
int doubleNumber(int num) {
return num * 2;
}
Dart8️⃣ الدوال المجهولة (Anonymous Functions
)
🔹 تُستخدم الدوال المجهولة (Lambda Functions) عندما لا تحتاج إلى تعريف دالة كاملة.
مثال: استخدام دالة مجهولة داخل forEach()
void main() {
List<int> numbers = [1, 2, 3, 4];
numbers.forEach((num) {
print('الرقم: $num');
});
}
Dart🔹 الناتج:
الرقم: 1
الرقم: 2
الرقم: 3
الرقم: 4
Dart9️⃣ تمرير دالة كمعامل (Higher-Order Function)
🔹 يمكن تمرير دالة كمعامل إلى دالة أخرى.
مثال: دالة تأخذ دالة أخرى كمعامل
void executeFunction(Function callback) {
callback();
}
void sayHello() {
print('مرحبًا بك!');
}
void main() {
executeFunction(sayHello);
}
Dart🔹 الناتج:
🔹 الخلاصة
✅ الدوال في Dart توفر طريقة قوية لتنظيم الكود، وتقليل التكرار، وزيادة كفاءة البرامج.
✅ يمكن أن تحتوي الدالة على معاملات اختيارية أو إجبارية، ويمكن أن تُرجع قيمة أو لا تُرجع شيئًا.
✅ يمكن استخدام الدوال المجهولة، الدوال المختصرة، وتمرير الدوال كمعاملات لجعل الكود أكثر مرونة.
💡 ما نوع الدالة التي تستخدمها أكثر في مشاريعك؟ 🚀