Track
/
Elixir
Elixir
/
Esercizi
/
Need for Speed
Need for Speed

Need for Speed

Esercizio di apprendimento

Introduzione

Alias

Per condividere codice tra moduli Elixir diversi all'interno dello stesso progetto, devi fare riferimento al modulo esterno con il suo nome completo. Ma cosa succede se quel nome è troppo lungo o poco chiaro?

La forma speciale alias ti permette di abbreviare o cambiare il nome con cui fai riferimento a un modulo esterno. Se usata senza argomenti, riduce il nome del modulo al suo ultimo segmento, ad esempio MyApp.Logger.Settings diventa Settings. Puoi specificare un nome personalizzato con l'opzione :as.

Di solito gli alias si aggiungono all'inizio della definizione del modulo.

defmodule Square do
  alias Integer, as: I

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

Import

La forma speciale import ti permette di usare le funzioni di un modulo esterno senza usare il nome del modulo.

Importare un intero modulo esterno potrebbe creare conflitti con le funzioni locali esistenti. Per evitarlo, sono disponibili due opzioni: :except e :only. Entrambe richiedono una keyword list, in cui la chiave è il nome della funzione e il valore è l'arità della funzione.

Di solito gli import si aggiungono all'inizio della definizione del modulo.

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

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

Istruzioni

Quell'auto radiocomandata che hai comprato di recente è diventata un hobby tutto nuovo. Hai organizzato gare di auto radiocomandate.

Stavi quasi finendo di scrivere un programma che avrebbe permesso di eseguire le simulazioni delle gare, quando il tuo gatto è saltato sulla tastiera e ha cancellato alcune righe di codice. Ora il programma non si compila più...

1. Correggi l'errore di compilazione Race.__struct__/0 is undefined

Aggiungi un alias in modo che il modulo NeedForSpeed.Race possa essere indicato con il nome più breve Race.

2. Correggi l'errore di compilazione Car.__struct__/0 is undefined

Aggiungi un alias in modo che il modulo NeedForSpeed.RemoteControlCar possa essere indicato con il nome più breve Car.

3. Correggi l'errore di compilazione undefined function puts/1

La funzione puts/1 proviene dal modulo IO. Importala per poterla usare senza fare riferimento al modulo.

4. Correggi l'errore di compilazione undefined function default_color/0

Le funzioni default_color/0, red/0, cyan/0 e green/0 provengono tutte dal modulo IO.ANSI. Hai in programma di aggiungere il supporto per altri colori di auto, quindi vuoi importare l'intero modulo. Purtroppo, la funzione color/1 del modulo IO.ANSI è in conflitto con una delle funzioni locali. Importa l'intero modulo IO.ANSI tranne quella funzione.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Elixir Exercism

Vuoi iniziare Need for Speed?

Iscriviti a Exercism per imparare e padroneggiare Elixir con 58 concetti168 esercizi e il mentoring di persone reali, tutto gratis.