Rutas
/
Elixir
Elixir
/
Ejercicios
/
Necesidad de velocidad
Necesidad de velocidad

Necesidad de velocidad

Ejercicio de aprendizaje

Introducción

Alias

Para compartir código entre distintos módulos de Elixir dentro del mismo proyecto, necesitas hacer referencia al módulo externo por su nombre completo. Pero ¿y si ese nombre es demasiado largo o confuso?

La forma especial alias te permite acortar o cambiar el nombre con el que haces referencia a un módulo externo. Cuando se usa sin argumentos, reduce el nombre del módulo a su último segmento, por ejemplo, MyApp.Logger.Settings se convierte en Settings. Se puede especificar un nombre personalizado con la opción :as.

Normalmente, los alias se añaden al principio de la definición del módulo.

defmodule Square do
  alias Integer, as: I

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

Import

La forma especial import te permite usar funciones de un módulo externo sin usar el nombre del módulo.

Importar un módulo externo completo podría crear conflictos con las funciones locales existentes. Para evitar esto, hay dos opciones disponibles: :except y :only. Ambas esperan una lista de palabras clave, donde la clave es el nombre de la función y el valor es la aridad de la función.

Normalmente, los import se añaden al principio de la definición del módulo.

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

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

Instrucciones

Ese coche teledirigido que compraste hace poco se ha convertido en toda una afición. Has estado organizando carreras de coches teledirigidos.

Estabas a punto de terminar de escribir un programa que permitiera ejecutar simulaciones de carreras cuando tu gato saltó sobre el teclado y borró unas cuantas líneas de código. Ahora tu programa ya no compila...

1. Corrige el error de compilación Race.__struct__/0 is undefined

Añade un alias para que se pueda hacer referencia al módulo NeedForSpeed.Race con el nombre más corto Race.

2. Corrige el error de compilación Car.__struct__/0 is undefined

Añade un alias para que se pueda hacer referencia al módulo NeedForSpeed.RemoteControlCar con el nombre más corto Car.

3. Corrige el error de compilación undefined function puts/1

La función puts/1 proviene del módulo IO. Impórtala para poder usarla sin hacer referencia al módulo.

4. Corrige el error de compilación undefined function default_color/0

Las funciones default_color/0, red/0, cyan/0 y green/0 provienen todas del módulo IO.ANSI. Tienes pensado añadir compatibilidad con otros colores de coche, así que quieres importar el módulo entero. Por desgracia, la función color/1 del módulo IO.ANSI entra en conflicto con una de tus funciones locales. Importa todo el módulo IO.ANSI excepto esa función.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Elixir Exercism

¿Listo para empezar Necesidad de velocidad?

Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.