Δο

Δομές σε Elixir

21 ασκήσεις

Σχετικά με την έννοια Δομές

Τα structs είναι ειδικοί maps με ένα καθορισμένο σύνολο κλειδιών.

  • Τα structs παρέχουν ελέγχους κατά τη μεταγλώττιση και προεπιλεγμένες τιμές.
  • Ένα struct παίρνει το όνομά του από το module στο οποίο ορίζεται.
  • Για να ορίσεις ένα struct, χρησιμοποίησε την κατασκευή defstruct.
    • Η κατασκευή συνήθως ακολουθεί αμέσως μετά τον ορισμό του module.
  • Το defstruct δέχεται είτε μια λίστα από atoms (για προεπιλεγμένες τιμές nil) είτε λίστες με λέξεις-κλειδιά (για συγκεκριμένες προεπιλεγμένες τιμές).
    • Τα πεδία χωρίς προεπιλεγμένες τιμές πρέπει να προηγούνται των πεδίων με προεπιλεγμένες τιμές.
defmodule Plane do
  defstruct [:engine, wings: 2]
end

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

Πρόσβαση σε πεδία και ενημέρωση

  • Οι περισσότερες συναρτήσεις που δουλεύουν με maps θα δουλέψουν και με structs.

    • Το Access Behaviour αποτελεί εξαίρεση και δεν υλοποιείται για structs.
  • Συνιστάται να χρησιμοποιείς τον τελεστή στατικής πρόσβασης . για να προσπελάσεις τα πεδία ενός struct.

  • Λήψη/ανάκτηση τιμών πεδίων:

    plane = %Plane{}
    plane.engine
    # => nil
    Map.fetch(plane, :wings)
    # => {:ok, 2}
    
  • Ενημέρωση τιμών πεδίων

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

Επιβολή αρχικοποίησης των τιμών πεδίων

  • Το χαρακτηριστικό module @enforce_keys δημιουργεί έναν έλεγχο κατά τον χρόνο εκτέλεσης ότι συγκεκριμένα πεδία πρέπει να αρχικοποιούνται σε τιμή μη-nil όταν δημιουργείται το struct.
  • Το @enforce_keys ακολουθείται από μια λίστα με τα κλειδιά των πεδίων (τα οποία είναι atoms).
  • Αν ένα κλειδί που επιβάλλεται δεν αρχικοποιηθεί, πετιέται ένα σφάλμα.
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 ακόμη ασκήσεις για να εξασκηθείς στην έννοια Δομές