Tracks
/
Elixir
Elixir
/
Temario
/
Funciones con múltiples cláusulas
Fu

Funciones con múltiples cláusulas en Elixir

72 ejercicios

Acerca de Funciones con múltiples cláusulas

En Elixir, una misma función puede tener varias cláusulas. Esto se consigue mediante la coincidencia de patrones en los argumentos de la función y el uso de guardas.

# pattern matching the argument
def number(7) do
  "Awesome, that's my favorite"
end

# using a guard
def number(n) when is_integer(n) do
  "That's not my favorite"
end

def number(_n) do
  "That's not even a number!"
end
  • Usa varias cláusulas de función para extraer la lógica de control de las funciones.
  • Las cláusulas se intentan en orden, de arriba abajo del archivo de código, hasta que una coincide.
  • Si ninguna tiene éxito, la máquina virtual de BEAM lanza un FunctionClauseError.
  • Si las variables de los argumentos no se usan ni en el cuerpo de la función ni en una guarda, deben ir precedidas de un _; de lo contrario, el compilador emite una advertencia.
  • Las funciones anónimas también pueden tener varias cláusulas.
    fn
      13 -> "Awesome, that's my favorite"
      _ -> "That's not my favorite"
    end
    

Ten en cuenta que las funciones con varias cláusulas no deben confundirse con la sobrecarga de funciones que quizá conozcas de otros lenguajes de programación. En Elixir, las funciones se identifican solo por su nombre y su aridad, no por los tipos de sus argumentos (ya que no hay tipado estático). La función number/1 del ejemplo se considera una sola función, independientemente de cuántas cláusulas tenga.

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

Aprende Funciones con múltiples cláusulas

La práctica está bloqueada

Desbloquea 10 ejercicios más para practicar Funciones con múltiples cláusulas