nuxScript

🔣 Operadores Customizáveis

Defina seus próprios operadores como Swift/Kotlin

Pipeline

// |> - Pipe (envia resultado para próxima função)
let result = [1,2,3]
    |> map(fn(x) => x * 2)
    |> filter(fn(x) => x > 2)
    |> sum()

// Equivalente a: sum(filter(map([1,2,3], fn(x) => x * 2), fn(x) => x > 2))

Composition

// >> - Compose (compõe funções)
// f >> g = fn(x) => g(f(x))
let f = fn(x) => x + 1
let g = fn(x) => x * 2
let h = f >> g

h(5)  // (5 + 1) * 2 = 12

// << - Compose reverso
// f << g = fn(x) => f(g(x))

Null-safe

// ?.- Null-safe property access
let user = {name: "John", address: null}
let city = user?.address?.city  // null (não quebra)

// ?[] - Null-safe index
let arr = [1, 2]
let x = arr?[10]  // null

// ?.() - Null-safe call
let fn: (fn) = null
fn?.()  // null (não quebra)

Spaceship

// <=> - Spaceship (retorna -1, 0, ou 1)
5 <=> 3     // 1 (maior)
3 <=> 5     // -1 (menor)
5 <=> 5     // 0 (igual)

// Útil para sorting
sort_by(users, fn(a, b) => a.age <=> b.age)

Elvis

// ?: - Elvis (default value)
let name = user.name ?: "Guest"
let config = value ?: "default"

// ??= - Null-coalescing assignment
current_user ??= new_user

Method Reference

// :: - Method reference
let adder = Int::plus
adder(2, 3)  // 5

// Property reference  
let len = String::length
len("hi")   // 2

// Passando como callback
let lengths = ["a", "bb"] |> map(String::length)