typestar

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

  1. @moduledoc documenta el módulo; @c_km_s y compañía guardan valores en tiempo de compilación.
  2. Los guiones bajos agrupan dígitos: 299_792 y 225_000_000 se leen de un vistazo.
  3. delay_s divide la distancia de ida y vuelta por la velocidad de la luz y Float.round recorta la respuesta.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Módulos y funciones; paso 3 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →