FwReactive
Programacao reativa em TLPP. Streams de dados com map/filter/reduce. Inspirado em RxJS.
Assinatura: oStream := FwReactive():of(dados) / :map(f) / :filter(p) / :reduce(r)
Retorna: FwStream
FwReactive traz programacao reativa pra TLPP — streams de dados que voce transforma com map/filter/reduce.
// Stream de clientes ativos com email
FwReactive():of(aClientes) ;
:filter({|c| !Empty(c:email)}) ;
:filter({|c| c:status == "ATIVO"}) ;
:map({|c| c:email}) ;
:forEach({|email| U_EnviaEmail(email, "Newsletter")})
// Agregacao
nTotal := FwReactive():of(aTitulos) ;
:filter({|t| t:status == "ABERTO"}) ;
:map({|t| t:valor}) ;
:reduce({|acc, val| acc + val}, 0)
Operacoes disponiveis
- map: transforma
- filter: filtra
- reduce: agrega
- forEach: efeito colateral
- take(n): pega N primeiros
- distinct: deduplica
- groupBy: agrupa por chave
Pegadinhas
- Lazy evaluation — operacoes so executam no terminal (forEach/reduce/collect).
- Mais lento que For tradicional em listas pequenas — vale em pipelines complexos.