المسارات
/
Elixir
Elixir
/
المنهج
/
مطابقة الأنماط
مط

مطابقة الأنماط في Elixir

73 تمرينًا

نبذة عن مطابقة الأنماط

عند كتابة دوال Elixir، يمكننا استخدام أسلوب تأكيدي مع مطابقة الأنماط:

def read_file() do
  {:ok, contents} = File.read("hello.txt")
  contents
end
  • تُجرى مطابقة الأنماط صراحةً باستخدام عامل المطابقة، =/2.

    • تنجح المطابقة عندما يوافق شكل البيانات على الجانب الأيسر من العامل ما يقابله على الجانب الأيمن.

    • عند نجاح المطابقة، تُسنَد المتغيرات على اليسار إلى القيم على اليمين.

    • استخدام الشرطة السفلية _ يتيح لنا تجاهل القيم في تلك المواضع.

      {:ok, number, _} = {:ok, 5, [4.5, 6.3]}
      number
      # => 5 is bound to this variable
      
    • يمكن استخدام عامل التثبيت ^ لمنع إعادة إسناد قيمة إلى متغير، والاكتفاء بمطابقة النمط مع قيمته الحالية.

      number = 10
      {:ok, ^number, _} = {:ok, 5, [4.5, 6.3]}
      # => ** (MatchError) no match of right hand side value: {:ok, 5, [4.5, 6.3]}
      
  • قد تحدث مطابقة الأنماط أيضًا في رأس فرع الدالة، بحيث لا تُستدعى الدالة إلا بالوسائط التي تطابق النمط.

  • يمكن إسناد القيم إلى المتغيرات داخل مطابقة أنماط في فرع دالة.

    defmodule Example do
      def named_function(:a = atom_variable) do
        {atom_variable, 1}
      end
    end
    
    Example.named_function(:a)
    # => {:a, 1}
    # The first function clause matches, so it is invoked
    
    Example.named_function(:b)
    # => ** (FunctionClauseError) no function clause matching in Example.named_function/1
    
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم مطابقة الأنماط

التدريب مقفل

افتح 10 تمارين إضافية لممارسة مطابقة الأنماط