Διαδρομές
/
Elixir
Elixir
/
Ασκήσεις
/
Ανάγκη για ταχύτητα
Ανάγκη για ταχύτητα

Ανάγκη για ταχύτητα

Άσκηση εκμάθησης

Εισαγωγή

Alias

Για να μοιραστείς κώδικα ανάμεσα σε διαφορετικά άρθρωματα 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

Η ειδική μορφή import σου επιτρέπει να χρησιμοποιήσεις συναρτήσεις από ένα εξωτερικό άρθρωμα χωρίς να χρησιμοποιήσεις το όνομα του αρθρώματος.

Η εισαγωγή ολόκληρου ενός εξωτερικού αρθρώματος μπορεί να δημιουργήσει συγκρούσεις με υπάρχουσες τοπικές συναρτήσεις. Για να το αποφύγεις, υπάρχουν δύο επιλογές: :except και :only. Και οι δύο περιμένουν μια λίστα λέξεων-κλειδιών, όπου το κλειδί είναι το όνομα της συνάρτησης και η τιμή είναι ο αριθμός των ορισμάτων της.

Συνήθως το import προστίθεται στην αρχή του ορισμού του αρθρώματος.

defmodule Square do
  import Integer, only: [pow: 2]

  def area(a), do: pow(a, 2)
end

Οδηγίες

Αυτό το τηλεκατευθυνόμενο αυτοκίνητο που αγόρασες πρόσφατα έχει εξελιχθεί σε ένα ολόκληρο νέο χόμπι. Διοργανώνεις αγώνες τηλεκατευθυνόμενων αυτοκινήτων.

Είχες σχεδόν τελειώσει τη συγγραφή ενός προγράμματος που θα επέτρεπε να τρέχεις προσομοιώσεις αγώνων, όταν η γάτα σου πήδηξε στο πληκτρολόγιό σου και διέγραψε μερικές γραμμές κώδικα. Τώρα το πρόγραμμά σου δε μεταγλωττίζεται πια...

1. Διόρθωσε το σφάλμα μεταγλώττισης Race.__struct__/0 is undefined

Πρόσθεσε ένα alias ώστε η ενότητα NeedForSpeed.Race να μπορεί να αναφέρεται με το συντομότερο όνομα Race.

2. Διόρθωσε το σφάλμα μεταγλώττισης Car.__struct__/0 is undefined

Πρόσθεσε ένα alias ώστε η ενότητα NeedForSpeed.RemoteControlCar να μπορεί να αναφέρεται με το συντομότερο όνομα Car.

3. Διόρθωσε το σφάλμα μεταγλώττισης undefined function puts/1

Η συνάρτηση puts/1 προέρχεται από την ενότητα IO. Κάνε import τη συνάρτηση για να μπορείς να τη χρησιμοποιήσεις χωρίς να αναφέρεις την ενότητα.

4. Διόρθωσε το σφάλμα μεταγλώττισης undefined function default_color/0

Οι συναρτήσεις default_color/0, red/0, cyan/0 και green/0 προέρχονται όλες από την ενότητα IO.ANSI. Σχεδιάζεις να προσθέσεις υποστήριξη για άλλα χρώματα αυτοκινήτων, οπότε θέλεις να κάνεις import ολόκληρη την ενότητα. Δυστυχώς, η συνάρτηση color/1 από την ενότητα IO.ANSI συγκρούεται με μία από τις τοπικές σου συναρτήσεις. Κάνε import ολόκληρη την ενότητα IO.ANSI εκτός από αυτή τη συνάρτηση.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Elixir Exercism

Έτοιμος να ξεκινήσεις την άσκηση Ανάγκη για ταχύτητα;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Elixir με 58 έννοιες168 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.