English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

الوحدات في Erlang

تكون الوحدة مجموعة من الدوال المدمجة تحت اسم واحد في ملف واحد. بالإضافة إلى ذلك، يجب أن تكون جميع الدوال في Erlang معرفة في الوحدة.

معظم العمليات الأساسية مثل العمليات الحسابية وال�وية والعمليات البولية متاحة بالفعل، لأن الوحدة الافتراضية يتم تحميلها عند تشغيل البرنامج. يحتاج كل دالة أخرى معينة في الوحدة التي ستستخدمها إلى استخدام Module: Function (Arguments) للإشارة إليها.

تحديد الوحدة

يمكن استخدام الوحدة لاستدعاء نوعين من المحتويات: الدوال والخصائص. تكون الخاصيات وصفًا للوحدة نفسها، مثل اسمها، الدوال المتاحة للعالم الخارجي، مؤلف الكود، وما إلى ذلك. تكون هذه المعلومات مفيدة جدًا لأنها تخبر المُعالج كيفية تنفيذ عمله، لأنها تسمح للناس باستخراج معلومات مفيدة من الكود المُعالج دون الحاجة إلى مراجعة الكود المصدر.

تكون نحو بيانات الدالة :

النحو

-module(modulename)

في هذا السياق، modulename هو اسم الوحدة. يجب أن يكون هذا في السطر الأول من كود الوحدة. يظهر البرنامج التالي مثالًا على وحدة تُدعى helloworld.

مثال

-module(helloworld). 
-export([start/0]). 
start() -> 
   io:fwrite("Hello World").

نتيجة الخروج للكود أعلاه هي -

Hello World

خصائص الوحدة

تحدد خاصيات الوحدة خصائص معينة للوحدة، وتتكون خاصيات الوحدة من علامة وقيمة.

تكون نحو خاصية الوحدة -

النحو

-Tag(Value)

البرنامج التالي يستخدم لشرح كيفية استخدام خاصيات الوحدة -

مثال

-module(helloworld). 
-author("TutorialPoint"). 
-version("1.0"). 
-export([start/0]). 
start() -> 
   io:fwrite("Hello World").

يحدد البرنامج أعلاه خاصيتين مخصصة: author و version، تستخدم لتمثيل مؤلف البرنامج ورقم النسخة.

نتيجة الخروج للكود أعلاه هي -

Hello World

الخصائص المدمجة مسبقًا

يملك Erlang بعض الخاصيات المدمجة مسبقًا يمكن ربطها بالوحدات، لنرى.

تصدير

ستستخدم الخاصيات المصدرة قائمة المعلمات والوظائف لصادرة إلى وحدات أخرى. سيحدد هذا الوحدة واجهة. رأينا هذا في المثال السابق.

النحو

export([FunctionName1/FunctionArity1,.,FunctionNameN/FunctionArityN])

في هذا المكان:

  • FunctionName − هذا هو اسم الدالة في البرنامج;

  • FunctionArity − هذا هو عدد المعلمات المرتبطة بالدالة;

مثال

-module(helloworld). 
-author("TutorialPoint"). 
-version("1.0"). 
-export([start/0]). 
start() -> 
   io:fwrite("Hello World").

نتيجة الخروج للكود أعلاه هي -

Hello World

الاستيراد

استخدام خاصية الاستيراد لاستيراد الوظائف من مكتبة أخرى لاستخدامها محليًا

النحو

-import(modulename, [functionname/parameter]).

في هذا المكان:

  • Modulename − هذا هو اسم المكتبة التي يجب استيرادها

  • functionname/parameter − هذه هي الوظائف التي يجب استيرادها في الوحدة

مثال

-module(helloworld). 
-import(io,[fwrite/1]). 
-export([start/0]). 
start() -> 
   fwrite("مرحبًا، عالمًا!\n").

في الكود أعلاه، نستخدم كلمة المفتاح import لاستيراد مكتبة “io”، وتحديد وظيفة fwrite. لذا، الآن، ليس من الضروري إضافة اسم المكتبة كل مرة يتم استدعاء وظيفة fwrite.

نتيجة الخروج للكود أعلاه هي -

مرحبًا، عالمًا!