البرمجة

Pattern Matching on Map Keys in Elixir

لفهم كيفية مطابقة أنماط (Pattern Matching) على مفاتيح الخريطة في رؤوس الدوال في Elixir، يجب عليك استخدام الرمز ^ مع المتغير الذي تريد مطابقته. ومن المهم أيضًا أن تكون قد أعطيت القيمة المراد مطابقتها للمتغير key من خلال استدعاء الدالة باستخدام my_func(key, map).

يمكنك تعديل كودك كالتالي:

elixir
def my_func(key, %{^key => _} = map), do: IO.puts("Key #{inspect(key)} exists in map") def my_func(key, map), do: IO.puts("Key #{inspect(key)} does not exist in map") # استدعاء الدالة key = :foo map = %{foo: "bar", baz: "qux"} my_func(key, map)

في هذا المثال، سيتم طباعة “Key :foo exists in map” لأن المفتاح :foo موجود في الخريطة. في حالة عدم وجود المفتاح، ستطبع “Key :foo does not exist in map”.

يرجى ملاحظة أن استخدام ^ يعني أن القيمة المراد مطابقتها معروفة مسبقًا وليس غير معروفة كما هو الحال في المطابقة العادية.

المزيد من المعلومات

للتوضيح، في Elixir، يمكنك استخدام الرمز ^ للإشارة إلى أن المتغير المستخدم في المطابقة (pattern) يجب أن يكون محددًا مسبقًا. يجب عليك توفير قيمة للمتغير key عند استدعاء الدالة my_func(key, map) حتى يتم تحديد المفتاح الذي تريد مطابقته.

في الكود الخاص بك، يمكنك تحديد المفتاح الذي تريد مطابقته عند استدعاء الدالة my_func(key, map)، كما هو موضح في المثال التالي:

elixir
defmodule MyModule do def my_func(key, %{^key => _} = map), do: IO.puts("Key #{inspect(key)} exists in map") def my_func(key, map), do: IO.puts("Key #{inspect(key)} does not exist in map") end # استدعاء الدالة key = :foo map = %{foo: "bar", baz: "qux"} MyModule.my_func(key, map)

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

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