المسارات
/
Elixir
Elixir
/
المنهج
/
الدوال متعددة البنود
ال

الدوال متعددة البنود في Elixir

72 تمرينًا

نبذة عن الدوال متعددة البنود

في Elixir، يمكن أن تحتوي الدالة الواحدة على عدة فروع. ويتحقق ذلك بمطابقة أنماط وسائط الدالة وباستخدام الشروط الحارسة.

# pattern matching the argument
def number(7) do
  "Awesome, that's my favorite"
end

# using a guard
def number(n) when is_integer(n) do
  "That's not my favorite"
end

def number(_n) do
  "That's not even a number!"
end
  • استخدم فروع الدالة المتعددة لاستخراج منطق التحكم من الدوال.
  • تُجرَّب الفروع بالترتيب، من أعلى ملف المصدر إلى أسفله، حتى ينجح أحدها.
  • إذا لم ينجح أي منها، يرفع BEAM VM الخطأ FunctionClauseError.
  • إذا لم تُستخدم متغيرات الوسائط في جسم الدالة ولا في شرط حارس، فيجب أن تسبقها شرطة سفلية _، وإلا أصدر المُصرِّف تحذيرًا.
  • يمكن أن تحتوي الدوال المجهولة أيضًا على عدة فروع.
    fn
      13 -> "Awesome, that's my favorite"
      _ -> "That's not my favorite"
    end
    

لاحظ أنه لا ينبغي الخلط بين الدوال متعددة الفروع وبين التحميل الزائد للدوال الذي قد تعرفه من لغات برمجة أخرى. في Elixir، تُعرَّف الدوال باسمها وعدد معاملاتها فقط، لا بأنواع وسائطها (إذ لا يوجد نظام أنواع ثابت). وتُعدّ الدالة number/1 من المثال دالة واحدة بصرف النظر عن عدد فروعها.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم الدوال متعددة البنود

التدريب مقفل

افتح 10 تمارين إضافية لممارسة الدوال متعددة البنود