Percursos
/
Elixir
Elixir
/
Exercícios
/
Need for Speed
Need for Speed

Need for Speed

Exercício de aprendizagem

Introdução

Alias

Para partilhares código entre diferentes módulos Elixir dentro do mesmo projeto, precisas de referenciar o módulo externo pelo seu nome completo. Mas e se esse nome for demasiado longo ou confuso?

A forma especial alias permite-te encurtar ou alterar o nome pelo qual referencias um módulo externo. Quando é usada sem argumentos, reduz o nome do módulo ao seu último segmento, por exemplo, MyApp.Logger.Settings passa a ser Settings. Podes indicar um nome à tua escolha com a opção :as.

Normalmente, os aliases são adicionados no início da definição do módulo.

defmodule Square do
  alias Integer, as: I

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

Import

A forma especial import permite-te usar funções de um módulo externo sem escrever o nome do módulo.

Importar um módulo externo inteiro pode criar conflitos com funções locais que já existam. Para evitar isso, tens duas opções: :except e :only. Ambas esperam uma lista de palavras-chave, em que a chave é o nome da função e o valor é o número de argumentos dessa função.

Normalmente, as importações são adicionadas no início da definição do módulo.

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

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

Instruções

Aquele carro telecomandado que compraste recentemente transformou-se num passatempo completamente novo. Tens andado a organizar corridas de carros telecomandados.

Estavas quase a acabar de escrever um programa que permitiria correr simulações de corrida quando o teu gato saltou para cima do teclado e apagou algumas linhas de código. Agora o teu programa já não compila...

1. Corrige o erro de compilação Race.__struct__/0 is undefined

Adiciona um alias para que o módulo NeedForSpeed.Race possa ser referido pelo nome mais curto Race.

2. Corrige o erro de compilação Car.__struct__/0 is undefined

Adiciona um alias para que o módulo NeedForSpeed.RemoteControlCar possa ser referido pelo nome mais curto Car.

3. Corrige o erro de compilação undefined function puts/1

A função puts/1 vem do módulo IO. Importa-a para a poderes usar sem referir o módulo.

4. Corrige o erro de compilação undefined function default_color/0

As funções default_color/0, red/0, cyan/0 e green/0 vêm todas do módulo IO.ANSI. Estás a planear adicionar suporte para outras cores de carro, por isso queres importar o módulo todo. Infelizmente, a função color/1 do módulo IO.ANSI entra em conflito com uma das tuas funções locais. Importa o módulo IO.ANSI todo, exceto essa função.

Editar via GitHub A ligação abre numa nova janela ou separador
Elixir Exercism

Estás pronto para começar Need for Speed?

Inscreve-te no Exercism para aprenderes e dominares Elixir com 58 conceitos168 exercícios, e mentoria humana real, tudo grátis.