Kurzusok
/
Elixir
Elixir
/
Tanterv
/
Struktúrák
St

Struktúrák ebben a kurzusban: Elixir

21 feladat

A(z) Struktúrák fogalomról

A structok olyan speciális map-ek, amelyeknek meghatározott kulcskészletük van.

  • A structok fordítási idejű ellenőrzéseket és alapértelmezett értékeket biztosítanak.
  • A struct arról a modulról kapja a nevét, amelyben definiálják.
  • Struct definiálásához használd a defstruct szerkezetet.
    • Ez a szerkezet általában közvetlenül a moduldefiníció után következik.
  • A defstruct elfogad vagy atomok listáját (ilyenkor az alapérték nil), vagy kulcsszólistákat (megadott alapértékekhez).
    • Az alapérték nélküli mezőknek meg kell előzniük az alapértékkel rendelkező mezőket.
defmodule Plane do
  defstruct [:engine, wings: 2]
end

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

Mezők elérése és frissítése

  • A map-ekkel dolgozó függvények többsége a structokkal is működik.

  • A structok mezőinek eléréséhez ajánlott a statikus elérési operátort, a . jelet használni.

  • Mezőértékek lekérése:

    plane = %Plane{}
    plane.engine
    # => nil
    Map.fetch(plane, :wings)
    # => {:ok, 2}
    
  • Mezőértékek frissítése

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

A mezőértékek inicializálásának kikényszerítése

  • Az @enforce_keys modulattribútum egy futásidejű ellenőrzést hoz létre, amely szerint a megadott mezőknek a struct létrehozásakor nem nil értéket kell kapniuk.
  • Az @enforce_keys után a mezőkulcsok listája áll (ezek atomok).
  • Ha egy kikényszerített kulcsot nem inicializálnak, hiba keletkezik.
defmodule User do
  @enforce_keys [:username]
  defstruct [:username]
end

%User{}
# => (ArgumentError) the following keys must also be given when building struct User: [:username]
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Struktúrák fogalmat

A gyakorlás zárolva

Oldj fel még 9 feladatot, hogy gyakorolhasd a(z) Struktúrák fogalmat