Χά

Χάρτες σε Elixir

45 ασκήσεις

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

Οι χάρτες είναι μια δομή δεδομένων που περιέχει ζεύγη κλειδιού-τιμής.

  • Τα κλειδιά μπορούν να είναι οποιουδήποτε τύπου, αλλά πρέπει να είναι μοναδικά.

  • Οι τιμές μπορούν να είναι οποιουδήποτε τύπου, δεν χρειάζεται να είναι μοναδικές.

  • Οι χάρτες δεν εγγυώνται τη σειρά του περιεχομένου τους, παρόλο που φαίνεται να το κάνουν.

    • Η υποκείμενη υλοποίησή τους δημιουργεί αυτή την εσφαλμένη εντύπωση:
      • Σε μικρά μεγέθη (<=32 καταχωρήσεις), υλοποιούνται ως διατεταγμένη λίστα Keyword.
      • Σε μεγαλύτερα μεγέθη (>32 καταχωρήσεις), υλοποιούνται ως hash array mapped trie [1].
  • Οι χάρτες μπορούν να δηλωθούν με μια μορφή literal:

    # An empty map
    %{}
    
    # A map with the atom key :a associated to the integer value 1
    %{a: 1}
    
    # A map with the string key "a" associated to the float value 2.0
    %{"a" => 2.0}
    
    # A map with the map key %{} with the list value [1 ,2, 3]
    %{%{} => [1, 2, 3]}
    
    # A map with keys of different types
    %{:a => 1, "b" => 2}
    
  • Οι χάρτες μπορούν επίσης να δημιουργηθούν με τη χρήση του Map.new από το άρθρωμα Map. Αυτό μπορεί να χρησιμοποιηθεί αν έχεις ήδη μια απαριθμήσιμη συλλογή που θέλεις να μετατρέψεις σε λίστα:

    kw_list = [a: 1, b: 2]
    Map.new(kw_list)
    # => %{a: 1, b: 2}
    
  • Μπορείς να έχεις πρόσβαση στις τιμές ενός χάρτη με πολλούς διαφορετικούς τρόπους:

    my_map = %{key: "value"}
    
    # with a dot if the key is an atom
    my_map.key
    # => "value"
    
    # with [], a syntax provided by the Access behaviour
    my_map[:key]
    # => "value"
    
    # with pattern matching
    %{key: x} = my_map
    x
    # => "value"
    
    # with Map.get/2
    Map.get(my_map, :key)
    # => "value"
    
  • Το άρθρωμα Map, που περιλαμβάνεται στην τυπική βιβλιοθήκη, έχει πολλές χρήσιμες συναρτήσεις για τη χρήση χαρτών.

    Map.delete(%{a: 2, b: 3}, :a)
    # => %{b: 3}
    
  • Οι χάρτες υλοποιούν το πρωτόκολλο Enumerable, επιτρέποντας τη χρήση συναρτήσεων του αρθρώματος Enum.

  • Οι ανώνυμες συναρτήσεις ή οι αναφορές σε συναρτήσεις που έχουν συλληφθεί απαιτούνται συχνά ως ορίσματα για συναρτήσεις του Map και του αρθρώματος Enum.

    # Increment the value by one, if it is not found, update it with 0
    Map.update(%{a: 1}, :a, 0, &(&1 + 1))
    # => %{a: 2}
    
    # Sorting by a specific sub-value
    list = [{"A", 4}, {"B", 3}, {"C", 2}, {"D", 1}]
    Enum.sort_by(list, &Kernel.elem(&1, 1))
    # => [{"D", 1}, {"C", 2}, {"B", 3}, {"A", 4}]
    
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Χάρτες

Η εξάσκηση είναι κλειδωμένη

Ξεκλείδωσε 10 ακόμη ασκήσεις για να εξασκηθείς στην έννοια Χάρτες