Saltar al contenido

Variables de Entorno y Plataforma

En esta página

Variables de entorno

env.get(key) devuelve str | nil — combínalo con ?? para proveer un valor por defecto sin ningún condicional adicional. env.set y env.remove permiten mutar el entorno del proceso actual (útil para propagarlo a subprocesos o en pruebas):

Define ZOLO_DEMO_VAR, la lee con fallback ??, y luego la elimina para mostrar que env.get devuelve nil cuando la clave no existe.

02-env-vars.zolo
Playground
// Feature: environment variables — `env.get`, `env.set`, `env.remove`

// Syntax: `env.get(key)` returns `str | nil`; `env.set(key, val)` mutates;

// `env.remove(key)` deletes; `env.all()` returns the full map.

// When to use: read config (`PORT`, `DATABASE_URL`), feature flags, secrets.


use std::env

// Set a var just for the demo.

env.set("ZOLO_DEMO_VAR", "hello-from-zolo")

// `env.get` returns nil if absent — combine with `??`.

let val = env.get("ZOLO_DEMO_VAR") ?? "(not set)"
print("ZOLO_DEMO_VAR = {val}")

// expected: ZOLO_DEMO_VAR = hello-from-zolo


// Typical config pattern: read with a default fallback.

let port = env.get("PORT") ?? "3000"
let log_level = env.get("LOG_LEVEL") ?? "info"
print("port: {port}, level: {log_level}")

// Clear it once we no longer need it.

env.remove("ZOLO_DEMO_VAR")
let removed = env.get("ZOLO_DEMO_VAR") ?? "(removed)"
print("after remove: {removed}")
// expected: after remove: (removed)

Detección de plataforma

env.os() devuelve "windows", "linux" o "macos"; env.arch() devuelve "x64", "arm64" etc.; env.home_dir() devuelve el directorio home del usuario actual o nil cuando no está disponible. Usa estos valores para bifurcar comportamientos dependientes de la plataforma:

Imprime SO, arquitectura y home, luego demuestra una función list_cmd() que elige dir o ls según el SO detectado.

03-os-and-arch.zolo
Playground
// Feature: platform detection — `env.os()`, `env.arch()`, `env.home_dir()`

// Syntax: each is a no-arg function. `os()` returns `"windows"`,

// `"linux"`, or `"macos"`. `arch()` returns `"x64"`, `"arm64"`, etc.

// When to use: branching by platform (paths, different commands),

// multi-arch builds, telemetry.


use std::env

let os_name = env.os()
let arch = env.arch()
let home = env.home_dir() ?? "(home unavailable)"

print("OS:   {os_name}")
print("ARCH: {arch}")
print("HOME: {home}")

// expected (Windows x64):

//   OS:   windows

//   ARCH: x64

//   HOME: C:\Users\<...>


// Pattern: a different command per OS.

fn list_cmd() -> str {
  if env.os() == "windows" {
    return "dir"
  }
  return "ls"
}

print("listing command on this platform: {list_cmd()}")

Desafío

Combina env.os() y env.arch() para construir un identificador de plataforma del tipo "linux-arm64" e imprimir un mensaje diferente para cada combinación.

Buscar en Zolo

9 resultados

enespt-br