Atributos de módulo en Elixir
Constantes de compilación para calcular un retardo de radio, declaradas una vez con @ y leídas donde sea.
defmodule Orbit do
@moduledoc "Round-trip radio delay to nearby worlds."
# Module attributes are constants, stamped in at compile time.
@c_km_s 299_792
@moon_km 384_400
@mars_km 225_000_000
def delay_s(km), do: Float.round(2 * km / @c_km_s, 1)
def report do
IO.puts("Moon, there and back: #{delay_s(@moon_km)} s")
IO.puts("Mars, there and back: #{delay_s(@mars_km)} s")
end
end
Orbit.report()
Cómo funciona
@moduledocdocumenta el módulo;@c_km_sy compañía guardan valores en tiempo de compilación.- Los guiones bajos agrupan dígitos:
299_792y225_000_000se leen de un vistazo. delay_sdivide la distancia de ida y vuelta por la velocidad de la luz yFloat.roundrecorta la respuesta.
Palabras clave y builtins usados aquí
defdefmoduledoend
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 396
- Tokens
- 74
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 59 segundos.
Paso 3 de 3 en Módulos y funciones; paso 3 de 27 en Fundamentos del lenguaje.