Για να μοιραστείς κώδικα ανάμεσα σε διαφορετικά άρθρωματα Elixir μέσα στο ίδιο έργο, πρέπει να αναφέρεις το εξωτερικό άρθρωμα με το πλήρες όνομά του. Τι γίνεται όμως αν αυτό το όνομα είναι πολύ μεγάλο ή μπερδεμένο;
Η ειδική μορφή alias σου επιτρέπει να συντομεύσεις ή να αλλάξεις το όνομα με το οποίο αναφέρεσαι σε ένα εξωτερικό άρθρωμα. Όταν χρησιμοποιείται χωρίς ορίσματα, περιορίζει το όνομα του αρθρώματος στο τελευταίο τμήμα του, π.χ. το MyApp.Logger.Settings γίνεται Settings. Μπορείς να ορίσεις ένα προσαρμοσμένο όνομα με την επιλογή :as.
Συνήθως το alias προστίθεται στην αρχή του ορισμού του αρθρώματος.
defmodule Square do
alias Integer, as: I
def area(a), do: I.pow(a, 2)
end
Η ειδική μορφή import σου επιτρέπει να χρησιμοποιήσεις συναρτήσεις από ένα εξωτερικό άρθρωμα χωρίς να χρησιμοποιήσεις το όνομα του αρθρώματος.
Η εισαγωγή ολόκληρου ενός εξωτερικού αρθρώματος μπορεί να δημιουργήσει συγκρούσεις με υπάρχουσες τοπικές συναρτήσεις. Για να το αποφύγεις, υπάρχουν δύο επιλογές: :except και :only. Και οι δύο περιμένουν μια λίστα λέξεων-κλειδιών, όπου το κλειδί είναι το όνομα της συνάρτησης και η τιμή είναι ο αριθμός των ορισμάτων της.
Συνήθως το import προστίθεται στην αρχή του ορισμού του αρθρώματος.
defmodule Square do
import Integer, only: [pow: 2]
def area(a), do: pow(a, 2)
end
Αυτό το τηλεκατευθυνόμενο αυτοκίνητο που αγόρασες πρόσφατα έχει εξελιχθεί σε ένα ολόκληρο νέο χόμπι. Διοργανώνεις αγώνες τηλεκατευθυνόμενων αυτοκινήτων.
Είχες σχεδόν τελειώσει τη συγγραφή ενός προγράμματος που θα επέτρεπε να τρέχεις προσομοιώσεις αγώνων, όταν η γάτα σου πήδηξε στο πληκτρολόγιό σου και διέγραψε μερικές γραμμές κώδικα. Τώρα το πρόγραμμά σου δε μεταγλωττίζεται πια...
Race.__struct__/0 is undefined
Πρόσθεσε ένα alias ώστε η ενότητα NeedForSpeed.Race να μπορεί να αναφέρεται με το συντομότερο όνομα Race.
Car.__struct__/0 is undefined
Πρόσθεσε ένα alias ώστε η ενότητα NeedForSpeed.RemoteControlCar να μπορεί να αναφέρεται με το συντομότερο όνομα Car.
undefined function puts/1
Η συνάρτηση puts/1 προέρχεται από την ενότητα IO. Κάνε import τη συνάρτηση για να μπορείς να τη χρησιμοποιήσεις χωρίς να αναφέρεις την ενότητα.
undefined function default_color/0
Οι συναρτήσεις default_color/0, red/0, cyan/0 και green/0 προέρχονται όλες από την ενότητα IO.ANSI. Σχεδιάζεις να προσθέσεις υποστήριξη για άλλα χρώματα αυτοκινήτων, οπότε θέλεις να κάνεις import ολόκληρη την ενότητα. Δυστυχώς, η συνάρτηση color/1 από την ενότητα IO.ANSI συγκρούεται με μία από τις τοπικές σου συναρτήσεις. Κάνε import ολόκληρη την ενότητα IO.ANSI εκτός από αυτή τη συνάρτηση.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Elixir με 58 έννοιες168 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.