تعتبر الدوال functions جزءًا أساسيًا في لغة برمجة دارت، حيث تقوم بتنفيذ مهمة محددة عند استدعائها. تأتي الدوال في دارت بعدة أشكال وأنواع، ونحن سنتعرف في هذه المقالة على أربعة أنواع رئيسية للدوال وهي:
دالة بدون معاملات ولا ترجع قيمة
هذا النوع من الدوال لا يستلزم تمرير أي معاملات إليها، ولا يُرجع قيمة بعد الانتهاء من تنفيذها. اليكم مثال على هذا النوع من الدوال:
void printName() { print("My name is John Doe."); } void main() { printName(); }
نتيجة الكود:
My name is John Doe.
في هذا المثال، تم تعريف الدالة printName
التي لا تحتاج لأي معاملات ولا ترجع قيمة. بمجرد استدعاء الدالة printName
في دالة main
، تتم طباعة النص “My name is John Doe.” على الشاشة.
يمكننا أيضًا إضافة المزيد من الأمثلة لهذا النوع من الدوال للتوضيح، كالتالي:
void printGreeting() { print("Hello, Dart!"); } void main() { printGreeting(); }
نتيجة الكود:
Hello, Dart!
دالة بمعاملات ولا ترجع قيمة
في هذا النوع من الدوال، يتم تمرير معاملات إلى الدالة ولكنها لا تقوم بإرجاع قيمة بعد الانتهاء من تنفيذها. اليكم مثالًا توضيحيًا:
void printName(String name) { print("Welcome, $name."); } void main() { printName("John"); }
نتيجة الكود:
Welcome, John.
في هذا المثال، تم تعريف الدالة printName
التي تأخذ معاملًا بنوع String
يُمثل اسمًا، ولكنها لا تقوم بإرجاع قيمة. عند استدعاء الدالة printName
في دالة main
وتمرير الاسم “John” كمعامل، يتم طباعة الترحيب “Welcome, John.” على الشاشة.
يمكننا أيضًا إضافة المزيد من الأمثلة لهذا النوع من الدوال للتوضيح، كالتالي:
void calculateArea(double length, double width) { double area = length * width; print("The area is $area square units."); } void main() { double l = 5.0; double w = 3.0; calculateArea(l, w); }
نتيجة الكود:
The area is 15.0 square units.
دالة بدون معاملات وترجع قيمة
هذا النوع من الدوال لا يستلزم تمرير أي معاملات إليها، ولكنها تقوم بإرجاع قيمة بعد الانتهاء من تنفيذها. اليكم مثالًا توضيحيًا:
String getGreeting() { return "Hello, Dart!"; } void main() { String greeting = getGreeting(); print(greeting); }
نتيجة الكود:
Hello, Dart!
في هذا المثال، تم تعريف الدالة getGreeting
التي لا تحتاج لأي معاملات ولكنها ترجع قيمة من نوع String
. عند استدعاء الدالة getGreeting
في دالة main
وتخزين القيمة المُرجعة في متغير greeting
، يتم طباعة التحية “Hello, Dart!” على الشاشة.
دالة بمعاملات وترجع قيمة
في هذا النوع من الدوال، يتم تمرير معاملات إلى الدالة وتقوم بإرجاع قيمة بعد الانتهاء من تنفيذها. اليكم مثالًا توضيحيًا:
int multiply(int a, int b) { return a * b; } void main() { int x = 5; int y = 3; int result = multiply(x, y); print("The result is $result."); }
نتيجة الكود:
The result is 15.
في هذا المثال، تم تعريف الدالة multiply
التي تأخذ معاملين بنوع int
وتقوم بإرجاع قيمة من نوع int
تمثل حاصل ضرب العددين. عند استدعاء الدالة multiply
في دالة main
وتمرير الأعداد 5 و 3 كمعاملات، يتم حساب الناتج 15 وتخزينه في المتغير result
، ومن ثم يتم طباعة النتيجة “The result is 15.” على الشاشة.
وهذا مثالًا توضيحيًا أخر:
double calculateAverage(List<double> numbers) { double sum = 0.0; for (double num in numbers) { sum += num; } return sum / numbers.length; } void main() { List<double> grades = [80.0, 90.0, 75.0, 85.0, 95.0]; double average = calculateAverage(grades); print("The average grade is $average."); }
نتيجة الكود:
The average grade is 85.0.
في هذا المثال، تم تعريف الدالة calculateAverage
التي تأخذ قائمةً من الأعداد بنوع double
وتقوم بحساب المتوسط الحسابي لتلك الأعداد. بعد حساب المتوسط، يتم إرجاع القيمة المحسوبة من الدالة. عند استدعاء الدالة calculateAverage
في دالة main
وتمرير قائمة الدرجات، يتم حساب المتوسط وتخزينه في المتغير average
، ثم يتم طباعة النتيجة “The average grade is 85.0.” على الشاشة.
يمكننا أيضًا إضافة المزيد من الأمثلة لهذا النوع من الدوال للتوضيح، كالتالي:
bool isEven(int number) { return number % 2 == 0; } void main() { int num = 7; bool isNumEven = isEven(num); if (isNumEven) { print("$num is even."); } else { print("$num is odd."); } }
نتيجة الكود:
7 is odd.
في هذا المثال، تم تعريف الدالة isEven
التي تأخذ عددًا بنوع int
وتقوم بالتحقق مما إذا كان العدد زوجيًا أم لا. إذا كان العدد زوجيًا، يتم إرجاع القيمة true
، وإلا فإنه يتم إرجاع القيمة false
. عند استدعاء الدالة isEven
في دالة main
وتمرير العدد 7 كمعامل، يتم التحقق من أن العدد فردي وبالتالي يتم طباعة النص “7 is odd.” على الشاشة.
في هذه المقالة، قمنا بتوضيح أربعة أنواع رئيسية للدوال functions في لغة برمجة دارت. تعرفنا على الدوال بدون معاملات ولا قيمة إرجاع، والدوال بمعاملات ولا قيمة إرجاع، والدوال بدون معاملات ولها قيمة إرجاع، والدوال بمعاملات ولها قيمة إرجاع. كل نوع من هذه الدوال له استخداماته ويمكن تنفيذه بطرق مختلفة حسب احتياجات المطور. يمكنك استخدام هذه المفاهيم لتطوير برامج متعددة المهام وتحقيق العديد من الوظائف المختلفة.