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

Need for Speed

Exercício de aprendizagem

Introdução

Alias

Para compartilhar código entre diferentes módulos Elixir dentro do mesmo projeto, você precisa se referir ao módulo externo pelo nome completo. Mas e se esse nome for longo ou confuso demais?

A forma especial alias permite encurtar ou alterar o nome pelo qual você se refere a um módulo externo. Quando usada sem argumentos, ela reduz o nome do módulo ao seu último segmento, por exemplo, MyApp.Logger.Settings se torna Settings. Um nome personalizado pode ser especificado 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 usar funções de um módulo externo sem usar o nome do módulo.

Importar um módulo externo inteiro pode criar conflitos com funções locais existentes. Para evitar isso, há duas opções disponíveis: :except e :only. Ambas esperam uma keyword list, em que a chave é o nome da função e o valor é a aridade da função.

Normalmente, os imports são adicionados 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 carrinho de controle remoto que você comprou recentemente virou um hobby totalmente novo. Você tem organizado corridas de carrinhos de controle remoto.

Você estava quase terminando de escrever um programa que permitiria rodar simulações de corrida quando seu gato pulou em cima do seu teclado e apagou algumas linhas de código. Agora seu programa não compila mais...

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

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

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

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

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

A função puts/1 vem do módulo IO. Importe-a para poder usá-la sem referenciar o módulo.

4. Corrija 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. Você está planejando adicionar suporte a outras cores de carro, então quer importar o módulo inteiro. Infelizmente, a função color/1 do módulo IO.ANSI entra em conflito com uma das suas funções locais. Importe todo o módulo IO.ANSI, exceto essa função.

Editar via GitHub O link abre em uma nova janela ou aba
Elixir Exercism

Tudo pronto para começar Need for Speed?

Crie sua conta no Exercism para aprender e dominar Elixir com 58 conceitos168 exercícios e mentoria humana de verdade, tudo de graça.