El operador de coincidencia en Elixir
Tres coincidencias: desestructurar una tupla, partir una lista y fijar un valor ya vinculado.
# = is a match, not an assignment: the shape on the left must fit the
# data on the right, and any bare names in it get bound.
{lat, lon} = {44.8, -68.7}
IO.puts("buoy anchored at #{lat}, #{lon}")
[flagship | escorts] = ["Puffin", "Skua", "Tern"]
IO.puts("#{flagship} leads; #{Enum.join(escorts, " and ")} follow")
# The pin operator ^ matches against a bound value instead of rebinding.
tide = "ebb"
{^tide, knots} = {"ebb", 2.5}
IO.puts("#{tide} current at #{knots} knots")
Cómo funciona
{lat, lon} = {44.8, -68.7}ajusta la forma de la izquierda y vincula los dos nombres.[flagship | escorts]parte la flota en su cabeza y la lista del resto.^tidefija la vinculación existente: la coincidencia afirma el valor en vez de revincular.
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 477
- Tokens
- 107
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 86 segundos.
Paso 1 de 3 en Coincidencia de patrones; paso 4 de 27 en Fundamentos del lenguaje.