ال

البنى في Elixir

21 تمرينًا

نبذة عن البنى

الهياكل هي خرائط خاصة لها مجموعة محددة من المفاتيح.

  • توفّر الهياكل فحوصات وقت الترجمة وقيمًا افتراضية.
  • يُسمّى الهيكل باسم الوحدة التي عُرّف فيها.
  • لتعريف هيكل، استخدم التركيب defstruct.
    • يأتي هذا التركيب عادةً مباشرةً بعد تعريف الوحدة.
  • يقبل defstruct إما قائمة من الذرات (لقيم افتراضية قيمتها nil) أو قوائم الكلمات المفتاحية (لقيم افتراضية محددة).
    • يجب أن تسبق الحقول التي بلا قيم افتراضية الحقول التي لها قيم افتراضية.
defmodule Plane do
  defstruct [:engine, wings: 2]
end

plane = %Plane{}
# => %Plane{engine: nil, wings: 2}

الوصول إلى الحقول وتحديثها

  • معظم الدوال التي تعمل مع الخرائط ستعمل أيضًا مع الهياكل.

  • يُوصى باستخدام عامل الوصول الساكن . للوصول إلى حقول الهيكل.

  • الحصول على قيم الحقول أو جلبها:

    plane = %Plane{}
    plane.engine
    # => nil
    Map.fetch(plane, :wings)
    # => {:ok, 2}
    
  • تحديث قيم الحقول

    plane = %Plane{}
    %{plane | wings: 4}
    # => %Plane{engine: nil, wings: 4}
    

فرض تهيئة قيم الحقول

  • سمة الوحدة @enforce_keys تُنشئ فحصًا في وقت التشغيل يفرض تهيئة الحقول المحددة بقيمة غير nil عند إنشاء الهيكل.
  • يأتي بعد @enforce_keys قائمة بمفاتيح الحقول (وهي ذرات).
  • إذا لم يُهيَّأ مفتاح مفروض، يُرفع خطأ.
defmodule User do
  @enforce_keys [:username]
  defstruct [:username]
end

%User{}
# => (ArgumentError) the following keys must also be given when building struct User: [:username]
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم البنى

التدريب مقفل

افتح 9 تمارين إضافية لممارسة البنى