التعامل مع الدوال في لغة دارت Dart 10 - Programmer Tech
Dart and flutter

التعامل مع الدوال في لغة دارت Dart 10

التعامل مع الدوال في لغة دارت

التعامل مع الدوال في لغة دارت Dart

الدوال (functions) هي مجموعة من الأوامر و هذه الأوامر تقوم بمهام معينة يتم استدعائها عند الحاجة إليها من أي مكان في داخل البرنامج.

أي إذا كان لدينا كود ونريد كتابته أكثر من مرة في البرنامج على سبيل المثال يوجد كود يجمع عددين و نحتاج لكتابته أكثر من مرة أو عشر مرات و بهذه الحالة سوف نقابل مشكلة تكرار الكود نفسه كثيراً و إهدار الجهد و الزمن, فبدلاً من تكرار الكود نقوم بوضع الكود بداخل دالة function و ثم استدعاء الدالة عند الحاجة لهذا الكود فبذلك نكون قد إختصرنا الجهد والوقت والزمن وجعلنا برنامجنا مختصر ومنظّم وبشكل جميل.

و يقال أيضاً عن الدوال على أنها كتلة برمجية تقوم بتنفيذ مجموعة من المهام وفق ترتيب محدد و هي تكون عبارة عن برنامج فرعي مهمته تنفيذ مهمة معينة حين يتم إستدعاءه ( أي عبارة عن مجموعة أوامر مجمعة في مكان واحد و تتنفذ عندما نقوم بإستدعائها).

المعرفة بالدوال درس مهم جداً لأي مبتدأ أو مُقدم على البرمجة يجب أن يكون مُلمّاً بهذا الموضوع وبدون معرفة كيفية بناء الدوال function لا يطلق على الشخص بأنه مبرمج أو يفهم في البرمجة بدون هذا الموضوع الذي هو بناء الدوال function.

إن افضل طريقة لإنشاء و صيانة البرامج الكبيرة هي تقسيم البرنامج إلى اكثر من قطعه برمجية, حيث أن كل قطعة تقوم بأداء مهام خاصة و بذلك تكون صيانة كل قطعه على حدى اسهل بكثير من لو وقعت مشكلة في برنامج كبير ذو قطعه واحدة.

لغة دارت (Dart) هي لغة برمجة تستخدم عادة لتطوير تطبيقات الويب وتطبيقات الهاتف المحمول باستخدام إطار العمل فلاتر (Flutter). وفي لغة دارت، يمكنك تعريف واستخدام الدوال لتنفيذ الأكواد المختلفة.

الشكل العام لكتابة الدالة في دارت

function_Name () {
 //statements 
}

 

إن function_Name هو إسم الدالة و نضع بعده قوسين دائرية () ثم قوسين معكوفة و بداخلهم ماهو مطلوب تنفيذه أو الأوامر المطلوبة من هذا الكود. 

إليك بعض الأمثلة على كيفية تعريف واستخدام الدوال في لغة دارت:

1 – تعريف دالة بدون قيمة عائدة (void function):

void sayHello() {
  print('Hello, World!');
}

2 – تعريف دالة تسترجع قيمة معينة:

int sum(int a, int b) {
  return a + b;
}

3 – استدعاء الدوال:

sayHello(); // سيتم طباعة 'Hello, World!' في وحدة التحكم (console)
int result = sum(5, 3); // سترجع القيمة 8 وتخزنها في المتغير result
print(result); // سيتم طباعة القيمة 8 في وحدة التحكم (console)

4 – دوال مع وسائط اختيارية (optional parameters):

void greet(String name, [String? greeting]) {
  if (greeting != null) {
    print('$greeting, $name!');
  } else {
    print('Hello, $name!');
  }
}

greet('Muhammad'); // سيتم طباعة 'Hello, Muhammad!' في وحدة التحكم (console)
greet('Muhammad', 'Hi'); // سيتم طباعة 'Hi, Muhammad!' في وحدة التحكم (console)

5 – دوال مع وسائط اسمية (named parameters):

void greet({required String name, String? greeting}) {
  if (greeting != null) {
    print('$greeting, $name!');
  } else {
    print('Hello, $name!');
  }
}

greet(name: 'Muhammad'); // سيتم طباعة 'Hello, Muhammad!' في وحدة التحكم (console)
greet(name: 'Muhammad', greeting: 'Hi'); // سيتم طباعة 'Hi, Muhammad!' في وحدة التحكم (console)

هذه بعض الأمثلة البسيطة عن كيفية استخدام الدوال في لغة دارت. تذكر أن هذه الأمثلة تسلط الضوء فقط على الجوانب الأساسية، وتوجد المزيد من الميزات المتقدمة في لغة دارت مثل الدوال المتعددة الوسائط والدوال المتعددة الأشكال والإغلاقات (closures) وغيرها.

هل يمكنني استخدام الدوال المتعددة الوسائط في لغة دارت؟

نعم، يمكنك استخدام الدوال المتعددة الوسائط (functions with multiple parameters) في لغة دارت. يمكنك تعريف دالة تحتوي على أكثر من وسيط وتمرير قيم لكل وسيط عند استدعاء الدالة.

إليك مثال على كيفية استخدام الدوال المتعددة الوسائط في لغة دارت:

void printDetails(String name, int age, String address) {
  print('Name: $name');
  print('Age: $age');
  print('Address: $address');
}

// استدعاء الدالة وتمرير القيم لكل وسيط
printDetails('Muhammad', 25, '123 Main St');

في المثال أعلاه، تم تعريف دالة printDetails التي تأخذ ثلاثة وسائط: name من نوع String، age من نوع int، و address من نوع String. عند استدعاء الدالة، يتم تمرير قيمة لكل وسيط.

يمكنك تعريف الدوال المتعددة الوسائط بأي عدد من الوسائط التي تحتاجها، وتحديد أنواعها. يمكنك أيضًا استخدام الوسائط الاختيارية أو الوسائط المسماة مع الدوال المتعددة الوسائط في الدارت.

مثال على استخدام الوسائط الاختيارية:

void greet(String name, {String? greeting, String? suffix}) {
  if (greeting != null) {
    print('$greeting, $name$suffix');
  } else {
    print('Hello, $name$suffix');
  }
}

greet('Muhammad', greeting: 'Hi', suffix: '!');

في المثال أعلاه، تم تعريف دالة greet التي تأخذ وسيطًا إجباريًا واثنين من الوسائط الاختيارية (greeting و suffix). عند استدعاء الدالة، يمكنك تحديد القيم للوسائط الاختيارية باستخدام اسم الوسيط.

إذا كنت بحاجة إلى المزيد من الوسائط، يمكنك ببساطة إضافتها في تعريف الدالة وتمرير القيم اللازمة عند استدعاء الدالة.

فوائد استخدام الدوال في دارت

استخدام الدوال في لغة دارت يوفر العديد من الفوائد والمزايا، ومن أهمها:

  1. إعادة استخدام الكود: باستخدام الدوال، يمكنك تجزئة الكود إلى وحدات صغيرة وقابلة لإعادة الاستخدام. هذا يعني أنه يمكنك كتابة دالة مرة واحدة واستخدامها في العديد من الأماكن في التطبيق الخاص بك بدلاً من كتابة نفس الكود مرارًا وتكرارًا.
  2. تنظيم الكود: باستخدام الدوال، يمكنك تجزئة الكود إلى وحدات منطقية ومستقلة. هذا يجعل الكود أكثر تنظيمًا وقابلية للصيانة وتطويره في المستقبل. يمكنك تجميع الوظائف ذات الصلة في دوال مختلفة واستدعائها حسب الحاجة.
  3. زيادة قابلية القراءة: باستخدام الدوال، يمكنك تعطي عناوين واضحة ووصفية للكود الخاص بك. بدلاً من وضع الكود المنطقي في مكان واحد طويل ومحدد، يمكنك تجزئته إلى دوال مع أسماء منطقية ومعبرة. هذا يسهل فهم الكود وقراءته ومشاركته مع فريق العمل الآخر.
  4. إمكانية الاختبار: باستخدام الدوال، يمكنك اختبار وحدات الكود بشكل منفصل. يمكنك إنشاء دوال اختبارية لاختبار كل دالة على حدة والتأكد من أنها تعمل بشكل صحيح قبل دمجها في التطبيق النهائي. هذا يساعد في تحسين جودة الكود وتجنب الأخطاء.
  5. تعزيز الإنتاجية: باستخدام الدوال، يمكنك زيادة سرعة تطوير التطبيقات. حيث يمكن لفريق العمل العمل بشكل مستقل على وحدات مختلفة باستخدام الدوال، وبالتالي يمكن تقسيم العمل وتسريع الإنتاجية.

هذه بعض الفوائد الرئيسية لاستخدام الدوال في لغة دارت. باستخدام الدوال بشكل صحيح، يمكنك تحسين جودة الكود وتنظيمه وزيادة قابلية الصيانة وتسهيل عملية التطوير.

قواعد إنشاء دالة في لغة دارت

  1. غير مسموح بإستخدام فراغات في إسم الدالة.
  2. غير مسموح بإستخدام الأشكال الخاصة ما عدا _.
  3. غير مسموح بإستخدام أحرف غير الأحرف الإنجليزية.
  4.  غير مسموح أن يبدأ إسم الدالة برقم. 

أنواع الدوال في دارت

يوجد أربع أنواع  من الدوال في لغة دارت و هي:

  1. بدون معطيات و بدون مرجعات.
  2. مع معطيات و بدون مرجعات.
  3. بدون معطيات مع مرجعات.
  4. مع معطيات و مع مرجعات.
void main(List<String> arguments) {
eating();
}
eating() {
    print("eating now");
}

 

أنشأنا دالة ()eating و هذه الدالة بها أمر طباعة جملة eating now و بعد إنشاها قمنا في داخل البرنامج الرئيسي بإستدعاءها بإسمها فقط لكي تعمل بدون أي مشاكل.

و عند تشغيل الكود سوف تكون النتيجة بالشكل

eating now

في حال أضفنا أكثر من أمر طباعة بنفس هذه الدالة, ثم قمنا بإستدعاءها مرتين سوف يطبع جميع الأوامر بكل مرة إستدعاء.

void main(List<String> arguments) {
 eating();
 eating();
 }
 eating() {
 	print("eating now1"); 
	print("eating now2"); 
	print("eating now3"); 
	print("eating now4"); 
}

 

أنشأنا دالة بها عدة أوامر طباعة ثم إستدعيناها مرتين في البرنامج الرئيسي, و عند تشغيل البرنامج سنحصل على النتيجة.

eating now1
eating now2
eating now3
eating now4
eating now1
eating now2
eating now3
eating now4

 

Ahmedkaissar

من مصر من محافظة الجيزة مبرمج ويب و خبير أمن معلومات محب للتقنية و الأمن المعلوماتي مدرب للغات "Python,html, css, php, js, laravel"

مقالات ذات صلة

زر الذهاب إلى الأعلى