parâmetrosNomes entre as barras verticais. São locais ao bloco e recebem os argumentos fornecidos na avaliação.
AdvPL Guia{ |[parâmetros]| [expressão1, expressão2, ...] }Crie funções anônimas armazenáveis, receba parâmetros e avalie expressões sob demanda com Eval().
Um bloco de código é um valor AdvPL do tipo B (Block), semelhante a uma função anônima. Ele pode receber parâmetros e executar uma ou mais expressões separadas por vírgulas. Eval() executa o bloco e devolve o resultado da última expressão. Diferentemente de uma função comum, o corpo do bloco aceita expressões e chamadas de funções, mas não comandos da linguagem.
{ |[parâmetros]| [expressão1, expressão2, ...] }parâmetrosNomes entre as barras verticais. São locais ao bloco e recebem os argumentos fornecidos na avaliação.
expressõesUma ou mais expressões separadas por vírgulas e executadas da esquerda para a direita.
retornoResultado da última expressão; um bloco vazio retorna NIL.
User Function ExBlocoSoma()
Local bSomar := { |nValor1, nValor2| Abs(nValor1) + Abs(nValor2) }
Local nResultado := Eval(bSomar, 10, -20)
ConOut("Resultado: " + CValToChar(nResultado))
ReturnEval() fornece os dois parâmetros e recebe 30, resultado da última e única expressão.
User Function ExBlocoLista()
Local bCalcular := { |nValor| ConOut("Valor recebido: " + CValToChar(nValor)), nValor * 2 }
Local nResultado := Eval(bCalcular, 5)
MsgInfo("Dobro: " + CValToChar(nResultado))
ReturnAs expressões são avaliadas da esquerda para a direita e o retorno é 10, resultado da última expressão.
User Function ExOrdenacao()
Local aNomes := {"CARLA", "ANDREA", "BEATRIZ"}
Local bDecrescente := { |cNome1, cNome2| cNome1 > cNome2 }
ASort(aNomes, , , bDecrescente)
ReturnO bloco compara pares selecionados por ASort() e permite ordenar o array em ordem decrescente.
User Function ExReferencia()
Local bIncrementar := { |nValor| nValor += 1 }
Local nContador := 0
Eval(bIncrementar, nContador) // nContador continua 0
Eval(bIncrementar, @nContador) // nContador passa a 1
ReturnSem @, o bloco recebe uma cópia do conteúdo; com @, a alteração alcança a variável original.
User Function ExContexto()
Local nContador := 0
Local bSomar := { |nValor| nContador += nValor }
Eval(bSomar, 5)
ConOut("Contador: " + CValToChar(nContador))
ReturnO bloco referencia e altera nContador no contexto Local em que foi criado.
© 2026 Usina.BR. Todos os direitos reservados. TOTVS, Protheus, Microsiga e seus respectivos logotipos são marcas de titularidade da TOTVS S.A. AdvPL é uma linguagem de programação desenvolvida pela TOTVS. O AdvPL Guia é um projeto independente, sem vínculo, representação, patrocínio ou afiliação com a TOTVS S.A., suas franquias ou representantes.