En

Enum σε Elixir

98 ασκήσεις

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

Το Enum είναι μια πολύ χρήσιμη μονάδα που προσφέρει ένα σύνολο αλγορίθμων για την εργασία με enumerables. Προσφέρει:

Και πολλά άλλα! Ανατρέξε στην τεκμηρίωση της μονάδας Enum για την πλήρη λίστα.

Enumerable

Γενικά, ένα enumerable είναι κάθε δεδομένο πάνω στο οποίο μπορούμε να κάνουμε επανάληψη, δηλαδή μια συλλογή. Στην Elixir, ένα enumerable είναι κάθε τύπος δεδομένων που υλοποιεί το πρωτόκολλο Enumerable protocol. Αυτοί είναι:

Μην ανησυχείς αν δεν τα ξέρεις όλα ακόμα.

Ο καθένας μπορεί να υλοποιήσει το πρωτόκολλο Enumerable για τη δική του προσαρμοσμένη δομή δεδομένων.

Reduce

Το Enum.reduce/2 σου επιτρέπει να ανάγεις ολόκληρο το enumerable σε μία μόνο τιμή. Για να το πετύχεις αυτό, χρησιμοποιείται μια ειδική μεταβλητή που ονομάζεται συσσωρευτής. Ο συσσωρευτής μεταφέρει την ενδιάμεση κατάσταση της αναγωγής ανάμεσα στις επαναλήψεις. Αυτό το κάνει μία από τις πιο ισχυρές συναρτήσεις για τα enumerables. Πολλές άλλες εξειδικευμένες συναρτήσεις θα μπορούσαν να αντικατασταθούν από τη γενικότερη reduce. Για παράδειγμα...

Εύρεση της μέγιστης τιμής:

Enum.max([4, 20, 31, 9, 2])
# => 31

Enum.reduce([4, 20, 31, 9, 2], nil, fn x, acc ->
  cond do
    acc == nil -> x
    x > acc -> x
    x <= acc -> acc
  end
end)

# => 31

Ακόμα και αντιστοίχιση (αλλά χρειάζεται να αντιστρέψεις το αποτέλεσμα μετά):

Enum.map([1, 2, 3, 4, 5], fn x -> x + 10 end)
# => [11, 12, 13, 14, 15]

Enum.reduce([1, 2, 3, 4, 5], [], fn x, acc -> [x + 10 | acc] end)
# => [15, 14, 13, 12, 11]

Αντιστοίχιση map

  • Με Map.new/2:

    %{a: 1, b: 2}
    |> Map.new(fn {key, value} -> {key, value * 10} end)
    
  • Με Enum.into/3:

    %{a: 1, b: 2}
    |> Enum.into(%{}, fn {key, value} -> {key, value * 10} end)
    
  • Με Enum.map/2:

    %{a: 1, b: 2}
    |> Enum.map(fn {key, value} -> {key, value * 10} end)
    |> Enum.into(%{})
    
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Enum

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

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