Tracks
/
Gleam
Gleam
/
Temario
/
Expresiones use
Ex

Expresiones use en Gleam

2 ejercicios

Acerca de Expresiones use

En Gleam es común escribir y usar funciones de orden superior, es decir, funciones que reciben otras funciones como argumentos. A veces, cuando usas muchas funciones de orden superior a la vez, el código puede volverse difícil de leer, con muchas capas de indentación.

Por ejemplo, aquí hay una función que llama a varias funciones que devuelven Result(Int, Nil) y suma los valores si las cuatro tienen éxito.

import gleam/result

pub fn main() -> Result(Int, Nil) {
  result.try(function1(), fn(a) {
    result.try(function2(), fn(b) {
      result.try(function3(), fn(c) {
        result.try(function4(), fn(d) {
          Ok(a + b + c + d)
        })
      })
    })
  })
}

Las expresiones use de Gleam nos permiten escribir este código sin la indentación, lo que a menudo lo hace más fácil de leer.

import gleam/result

pub fn main() -> Result(Int, Nil) {
  use a <- result.try(function1())
  use b <- result.try(function2())
  use c <- result.try(function3())
  use d <- result.try(function4())
  Ok(a + b + c + d)
}

Una expresión use recoge todas las sentencias que siguen en el bloque y las pasa como una función de callback como argumento final a la llamada a la función. Las variables entre la palabra clave use y el símbolo <- son los nombres de los argumentos que se pasarán a la función de callback.

// This use expression
use a <- function(1, 2)
io.println("Hello!")
a

// Is equivalent to this normal function call
function(1, 2, fn(a) {
  io.println("Hello!")
  a
})

La función de callback puede recibir cualquier cantidad de argumentos, o ninguno.

use a, b, c, d <- call_4_function()

use <- call_0_function()

No hay requisitos especiales para crear una función que se pueda llamar con una expresión use, más allá de recibir una función de callback como argumento final.

pub fn call_twice(function: fn() -> t) -> #(t, t) {
  let first = function()
  let second = function()
  #(first, second)
}

Las expresiones use de Gleam son una funcionalidad muy potente que se puede aplicar a muchos problemas, pero cuando se abusa de ellas pueden hacer que el código sea difícil de leer. Por lo general, se prefiere usar la sintaxis normal de llamada a funciones y recurrir a las expresiones use solo cuando hacen que el código sea más fácil de leer.

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

Aprende Expresiones use