الهياكل هي خرائط خاصة لها مجموعة محددة من المفاتيح.
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]