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

الدوال المجهولة في Elixir

4 تمارين

نبذة عن الدوال المجهولة

تُستخدم الدوال المجهولة كثيرًا في جميع أنحاء Elixir بمفردها، وكقيم مُرجعة، وكوسائط في الدوال عالية الرتبة مثل Enum.map/2:

Enum.map([1, 2, 3], fn n -> n + 1 end)
# => [2, 3, 4]

تُعامَل الدوال في Elixir كمواطنين من الدرجة الأولى:

  • يمكن إسناد الدوال المسماة والمجهولة إلى متغيرات.
  • يمكن تمرير الدوال المسماة والمجهولة مثل البيانات كوسائط وقيم مُرجعة.
  • يمكن إنشاء الدوال المجهولة ديناميكيًا.

تُنشأ الدوال المجهولة بالكلمة المفتاحية fn وتُستدعى بنقطة (.):

function_variable = fn n -> n + 1 end

function_variable.(1)
# => 2

يمكن إنشاء الدوال المجهولة باستخدام اختصار الالتقاط &.

  • تشير & الأولى إلى بداية تعبير الالتقاط.

  • تشير &1 و&2 وهكذا إلى الوسائط الموضعية للدالة المجهولة.

    # Instead of:
    fn x, y -> abs(x) + abs(y) end
    
    # We can write:
    &(abs(&1) + abs(&2))
    
  • يمكن أيضًا استخدام عامل الالتقاط & من أجل التقاط دالة مسماة موجودة:

    # Instead of:
    fn a, b -> a <= b end
    
    # We can capture the function using its name and arity:
    &<=/2
    

الدوال المجهولة في Elixir هي إغلاقات. تستطيع الوصول إلى المتغيرات الموجودة في النطاق عند تعريف الدالة. أما المتغيرات المُسندة داخل دالة مجهولة فلا يمكن الوصول إليها من خارجها:

y = 2

square = fn ->
  x = 3
  x * y
end

square.()
# => 6

x
# => ** (CompileError): undefined function x/0
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم الدوال المجهولة

التدريب مقفل

افتح 1 تمرين إضافي لممارسة الدوال المجهولة