---
title: Pattern Matching
localeTitle: نمط مطابقة
---
## نمط مطابقة

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

تحتوي المباراة على جزأين رئيسيين ، الجانب الأيسر والجانب الأيمن. الجانب الأيمن هو بنية بيانات من أي نوع. يحاول الجانب الأيسر مطابقة هيكل البيانات على الجانب الأيمن وإلزام أي متغيرات على اليسار بهيكل فرعي على اليمين. في حالة عدم العثور على تطابق ، يقوم المشغل برفع خطأ.

أبسط تطابق هو متغير وحيد على اليسار وأي بنية بيانات على اليمين. هذا المتغير سوف يتطابق مع أي شيء. فمثلا:  
`x = 12`  
`x = "Hello"`  
`IO.puts(x)`

يمكنك وضع المتغيرات داخل بنية بحيث يمكنك التقاط بنية تحتية. فمثلا:  
`[var_1, _unused_var, var_2] = [{"First variable"}, 25, "Second variable" ]`  
`IO.puts(var_1)`  
`IO.puts(var_2)`

سيخزن هذا القيم ، `{"First variable"}` في var _1 و `"Second variable"` في var_ 2. كما يوجد متغير \_ خاص (أو متغيرات مسبوقة بـ '\_') تعمل تمامًا مثل المتغيرات الأخرى ولكنها تخبر elixir ، "تأكد من وجود شيء ما هنا ، ولكن لا يهمني بالضبط ما هو عليه." في المثال السابق ، كان \_unused\_var أحد هذه المتغيرات.

يمكننا مطابقة الأنماط المعقدة باستخدام هذه التقنية. على سبيل المثال ، إذا كنت تريد إزالة الرقم والحصول عليه في مجموعة ضمن قائمة موجودة في قائمة ، فيمكنك استخدام الأمر التالي:  
`[_, [_, {a}]] = ["Random string", [:an_atom, {24}]]`  
`IO.puts(a)`

البرنامج أعلاه يولد النتيجة التالية -  
`24`

سيتم ربط هذا إلى 24. يتم تجاهل القيم الأخرى عند استخدام '\_'.

في مطابقة النمط ، إذا استخدمنا متغيرًا على اليمين ، فسيتم استخدام قيمته. إذا كنت ترغب في استخدام قيمة متغير على اليسار ، فستحتاج إلى استخدام مشغل الدبوس.

على سبيل المثال ، إذا كان لديك متغير "a" به قيمة 25 وتريد مطابقته مع متغير آخر "b" به قيمة 25 ، فأنت بحاجة إلى إدخال -  
`a = 25`  
`b = 25`  
`^a = b`

يتطابق السطر الأخير مع القيمة الحالية لـ ، بدلاً من تعيينها ، إلى قيمة b. إذا كان لدينا مجموعة غير متطابقة من الجانب الأيسر والأيمن ، فإن مشغل المطابقة يثير خطأ. على سبيل المثال ، إذا حاولنا مطابقة المجموعة مع قائمة أو قائمة بالحجم 2 مع قائمة بالحجم 3 ، فسيتم عرض خطأ.