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

الحماية في Erlang

يمكن استخدام الحماية كنموذج لتعزيز وظيفة التطابق. باستخدام الحماية، يمكننا إجراء اختبارات بسيطة وتقارن بين المتغيرات في النمط.

قواعد اللغة العامة للجملة الحماية هي كما يلي -

دالة(المتغيرات) عند(الشروط) ->

حيث،

  • Function(parameter) توضح هذا دالة الت声明 المستخدمة تحت ظروف الحماية.

  • Parameter −عادةً، الشروط الحماية تعتمد على المعلمات.

  • الشروط تقييم الشروط لتحديد ما إذا كان يجب تنفيذ الدالة.

  • عندما يتم تحديد شرط الحماية، يجب استخدام جملة when.

دعنا نرى كيف يمكننا استخدام مثال بسيط للحماية -

مثال

-module(helloworld). 
-export([display/1, start/0]). 
عرض(N) عند(N) أكبر من(10) ->   
   io:fwrite("أكبر من 10"); 
عرض(N) عند(N) أقل من(10) -> كتابة(الإخراج، "أقل", " "، "N") 
   أكبر من 10"). 
start() -> 
   display(11).

بشأن الأمثلة المذكورة أعلاه، يجب الانتباه إلى النقاط التالية:

  • تعريف display function مع حماية واحدة. عندما يكون المعامل n أكبر من 10، يكون لديك إعلان حماية في بداية الإعلان. لذلك، إذا كان المعامل أكبر من 10، يتم استدعاء هذه الدالة.

  • تعريف مرة أخرى لـ display function، ولكن هذه المرة الحماية أقل من 10. بهذه الطريقة، يمكنك تعريف نفس الدالة عدة مرات، حيث لكل دالة شرط حماية منفرد.

أهمية البرنامج المذكور أعلاه كالتالي:

أكبر من 10

يمكن استخدام شروط الحماية أيضًا في جملة if else وcase. دعنا نرى كيف يمكن تنفيذ عملية الحماية لهذه الجمل.

حماية جملة if

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

-module(helloworld). 
-export([start/0]). 
start() -> 
   N = 9, 
   if 
      N > 10 -> 
         io:fwrite("N أكبر من 10"); 
      true -> 
         io:fwrite("N أقل من 10") 
   end.

بشأن الأمثلة المذكورة أعلاه، يجب الانتباه إلى النقاط التالية:

  • يستخدم دالة الحماية مع جملة if. إذا كان ناتج حساب دالة الحماية صحيحًا، فإنه سيتم عرض جملة "N أكبر من 10".

  • إذا كان ناتج حساب دالة الحماية خطأ، فإنه سيتم عرض جملة "N أقل من 10".

الناتج للبرنامج أعلاه كالتالي:

الناتج

N أقل من 10

حماية جملة case

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

مثال

-module(helloworld). 
-export([start/0]). 
start() -> 
   A = 9, 
   case A of {A} when A>10 -> 
      io:fwrite("قيمة A أكبر من 10");  _  -> 
      io:fwrite("قيمة A أقل من 10") 
   end.

بشأن الأمثلة المذكورة أعلاه، يجب الانتباه إلى النقاط التالية:

  • يستخدم دالة الحماية مع جملة case. إذا كان ناتج حساب دالة الحماية صحيحًا، فإنه سيتم عرض جملة "قيمة A أكبر من 10".

  • إذا كان الناتج الحسابي لدالة الحماية غير قيمة أخرى، فإنه سيتم عرض جملة "قيمة A أقل من 10".

الناتج للبرنامج أعلاه كالتالي:

الناتج

قيمة A أقل من 10

شروط الحماية المتعددة

يمكن أيضًا تحديد عدة شروط حماية للدالة. نموذج الجملة العامة للجملة الحامية ذات الشروط الحامية المتعددة هو كما يلي-

function(parameter) when condition1 , condition1 , .. conditionN ->

حيث،

  • Function(parameter) −هذا هو إعلان الدالة باستخدام شرط الحماية.

  • Parameter −عادةً، الشروط الحماية تعتمد على المعلمات.

  • condition1, condition1, .. conditionN −هذه هي الحمايات المتعددة المطبقة على الوظائف.

  • عندما يتم تحديد شرط الحماية، يجب استخدام جملة when.

دعونا نرى كيف يمكن استخدام مثال بسيط لعدة حمايات-

مثال

-module(helloworld). 
-export([display/1, start/0]). 
display(N) when N > 10, is_integer(N) -> 
   io:fwrite("أكبر من 10"); 
display(N) when N < 10 -> 
   io:fwrite("أقل من 10"). 
   
start() -> 
   display(11).

عن هذه الأمثلة، يجب مراعاة النقاط التالية:

  • ستلاحظ أن، بالإضافة إلى شرط N>10، تم تحديد شرط is\u integer للـ display function declaration. لذا، سيتم تنفيذ هذه الوظيفة فقط عندما يكون قيمة N عددًا صحيحًا أكبر من 10.

الناتج للبرنامج أعلاه كالتالي:

الناتج

أقل من 10