Continuando con la serie sobre Elixir en ésta ocasión veremos algo de funciones. Funciones propias del lenguaje y cómo crear las nuestras.
Pero, antes que nada, ¿qué es una función? Una función es un bloque de código que realizar una operación específica. Este bloque tiene un nombre y contiene las instrucciones necesarias para realizar esa tarea. Se puede invocar y devolverá un valor: el resultado de dicha operación.
# Función para sumar 2 números suma = fn (a,b) -> a+b end # Función para restar dos números resta = fn (a,b) -> a-b end
En este código definimos dos funciones anónimas (suma y resta) que nos devolverán el resultado. Invocamos las funciones.
IO.puts suma.(3,5) # 8 IO.puts resta.(6,2) # 4
Abajo hacemos uso de una función propia de Elixir para medir la longitud de una cadena.
String.length("CODE-MONKEY-JUNIOR") 18
Existen más funciones para manipulaciones de cadena de caracteres que son muy útiles y nos ahorrarán tiempo de desarrollo.
String.contains?("code for life", "for") true String.capitalize("elixir") "Elixir" String.downcase("CODEMONKEY") "codemonkey"
¿Y qué con los procedimientos? Un procedimiento es similar a una función. Es un bloque que tendrá un nombre y podrá ser invocado, pero no devolverá ningún valor.
Esto (los procedimientos) se puede ver en un clásico Hola mundo o cualquier operación que no devuelva algo con lo que podamos hacer alguna operación.
holamundo.exs
defmodule Hello do def print(lang \\ :en) def print(:de), do: "Hallo Welt" def print(:en), do: "Hello World" def print(:es), do: "Hola Mundo" def print(:ru), do: "Привет мир" end IO.puts Hello.print() IO.puts Hello.print(:es) Io.puts Hello.print(:ru)
Ejecutamos:
$ elixir holamundo.exs Hello World Hola Mundo Привет мир
Ahora procedemos a crear dos funciones de suma y resta (funciones con nombre):
defmodule Operaciones do def sumar(x,y) do x+y end def restar(x,y) do x-y end end
Invocamos las funciones:
x=2 y=4 IO.puts "Suma de #{x} + #{y} da: #{Operaciones.sumar(x,y)}" IO.puts "Resta de #{x} - #{y} da: #{Operaciones.restar(x,y)}"
Más post sobre elixir en futuras entregas.
Enlaces:
https://elixir-lang.org/https://joyofelixir.com/
No hay comentarios:
Publicar un comentario