في Dart، يمكنك استخدام الدوال المجهولة و الدوال السهمية لكتابة كود أكثر اختصارًا ووضوحًا.
دعونا نستعرض كل نوع بالتفصيل مع الأمثلة! 👇
🔹 1. الدوال المجهولة (Anonymous Functions
)
الدوال المجهولة هي دوال بدون اسم، تُستخدم عادةً كمعامل في دالة أخرى أو عند الحاجة إلى تنفيذ كود سريع بدون الحاجة إلى تعريف دالة مستقلة.
📌 الصيغة العامة:
(var parameter) {
// كود الدالة
};
Dart✨ مثال 1: استخدام دالة مجهولة مع forEach()
void main() {
List<String> names = ['Ali', 'Sara', 'Omar'];
names.forEach((name) {
print('مرحبًا، $name');
});
}
Dart🔹 الناتج:
مرحبًا، Ali
مرحبًا، Sara
مرحبًا، Omar
Dart📌 ملاحظة:
- تم تمرير دالة مجهولة إلى
forEach()
. - تأخذ الدالة
name
كمعامل، ثم تطبع رسالة الترحيب.
✨ مثال 2: تخزين دالة مجهولة في متغير
يمكنك تخزين دالة مجهولة داخل متغير واستدعاؤها لاحقًا.
void main() {
var multiply = (int a, int b) {
return a * b;
};
print(multiply(3, 4)); // 12
}
Dart🔹 الناتج:
نسختحرير12
📌 ملاحظة:
- المتغير
multiply
يخزن دالة مجهولة تقوم بضرب عددين. - يمكن استدعاؤها مثل أي دالة عادية باستخدام
multiply(3, 4)
.
✨ مثال 3: تمرير دالة مجهولة كمعامل لدالة أخرى
void execute(Function operation) {
operation();
}
void main() {
execute(() {
print('تم تنفيذ العملية!');
});
}
Dart🔹 الناتج:
📌 ملاحظة:
- يتم تمرير دالة مجهولة إلى
execute()
عند استدعائها.
🔹 2. الدوال السهمية (Arrow Functions
)
الدوال السهمية (Arrow Functions
) تُستخدم لاختصار الدوال عند احتوائها على تعليمة واحدة فقط.
📌 الصيغة العامة:
returnType functionName(parameters) => expression;
Dart🔹 بدلًا من:
dartنسختحريرint add(int a, int b) {
return a + b;
}
🔹 يمكنك كتابتها هكذا:
dartنسختحريرint add(int a, int b) => a + b;
✨ مثال 1: دالة سهمية لجمع عددين
int sum(int a, int b) => a + b;
void main() {
print(sum(4, 5)); // 9
}
Dart🔹 الناتج:
نسختحرير9
📌 ملاحظة:
=>
تعني “ترجع” (return).- لا حاجة لكتابة
{}
أوreturn
عند استخدام تعليمة واحدة فقط.
✨ مثال 2: دالة سهمية بدون معاملات
void main() {
var greet = () => print('مرحبًا بك!');
greet();
}
Dart🔹 الناتج:
📌 ملاحظة:
- الدالة السهمية يمكن أن تكون بدون معاملات أيضًا.
✨ مثال 3: دالة سهمية تُرجع قيمة منطقية
bool isEven(int number) => number % 2 == 0;
void main() {
print(isEven(4)); // true
print(isEven(7)); // false
}
Dart🔹 الناتج:
true
false
Dart📌 ملاحظة:
- يمكن استخدام
=>
مع أي نوع بيانات (int
,bool
,String
, إلخ).
✨ مثال 4: دالة سهمية داخل forEach()
void main() {
List<int> numbers = [1, 2, 3, 4];
numbers.forEach((num) => print('الرقم: $num'));
}
Dart🔹 الناتج:
الرقم: 1
الرقم: 2
الرقم: 3
الرقم: 4
Dart📌 ملاحظة:
- الدالة السهمية تختصر الكود وتجعل الكود أكثر وضوحًا.
🔹 الفرق بين Anonymous
و Arrow
المقارنة | الدوال المجهولة (Anonymous ) | الدوال السهمية (Arrow ) |
---|---|---|
التعريف | دالة بدون اسم تُستخدم مرة واحدة غالبًا. | دالة مختصرة بتعبير واحد فقط. |
الشكل | () {} | () => |
استخدام return | يجب كتابتها يدويًا إذا كانت الدالة تُرجع قيمة. | return مضمّن تلقائيًا. |
عدد التعليمات | يمكن أن تحتوي على أكثر من تعليمة. | يجب أن تحتوي على تعليمة واحدة فقط. |
🔹 متى تستخدم كل نوع؟
✅ استخدم Anonymous Functions
عندما تحتاج إلى تعريف دالة سريعة داخل دالة أخرى (مثل forEach
).
✅ استخدم Arrow Functions
عندما يكون لديك تعليمة واحدة فقط وتريد اختصار الكود.
💡 أي نوع من الدوال تفضّل استخدامه في مشاريعك؟ 🚀🔥
4o