Треки
/
Gleam
Gleam
/
Салабус
/
Вирази `use`
Ви

Вирази `use` у Gleam

2 вправи

Про концепцію Вирази `use`

У Gleam прийнято писати та використовувати функції вищого порядку, тобто функції, які приймають інші функції як аргументи. Іноді, коли ми використовуємо багато функцій вищого порядку одночасно, код стає важко читати, бо в ньому багато рівнів відступів.

Наприклад, ось функція, яка викликає кілька функцій, що повертають Result(Int, Nil), і підсумовує значення, якщо всі чотири успішні.

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)
        })
      })
    })
  })
}

Вирази use у Gleam дають змогу написати цей код без відступів, що часто робить його зрозумілішим.

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)
}

Вираз use збирає всі наступні інструкції в блоці й передає їх як функцію зворотного виклику останнім аргументом у виклик функції. Змінні між ключовим словом use і символом <- задають назви аргументів, які буде передано функції зворотного виклику.

// 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
})

Функція зворотного виклику може приймати будь-яку кількість аргументів або жодного.

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

use <- call_0_function()

Щоб створити функцію, яку можна викликати за допомогою виразу use, немає жодних особливих вимог, крім того, що вона має приймати функцію зворотного виклику останнім аргументом.

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

Вирази use у Gleam дають дуже потужну можливість, яку можна застосувати до багатьох задач, але якщо зловживати нею, код стає важко читати. Зазвичай краще користуватися звичайним синтаксисом виклику функцій і звертатися до виразів use лише тоді, коли вони роблять код зрозумілішим.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Вирази `use`