parâmetrosNombres entre las barras verticales. Son locales al bloque y reciben los argumentos proporcionados.
Guía AdvPL{ |[parâmetros]| [expressão1, expressão2, ...] }Crea funciones anónimas almacenables, recibe parámetros y evalúa expresiones bajo demanda con Eval().
Un bloque de código es un valor AdvPL de tipo B (Block), similar a una función anónima. Puede recibir parámetros y ejecutar una o más expresiones separadas por comas. Eval() ejecuta el bloque y devuelve el resultado de la última expresión. A diferencia de una función común, su cuerpo admite expresiones y llamadas a funciones, pero no comandos del lenguaje.
{ |[parâmetros]| [expressão1, expressão2, ...] }parâmetrosNombres entre las barras verticales. Son locales al bloque y reciben los argumentos proporcionados.
expressõesUna o más expresiones AdvPL separadas por comas y ejecutadas de izquierda a derecha.
retornoResultado de la última expresión; un bloque vacío devuelve NIL.
User Function ExBloqueSuma()
Local bSumar := { |nValor1, nValor2| Abs(nValor1) + Abs(nValor2) }
Local nResultado := Eval(bSumar, 10, -20)
ConOut("Resultado: " + CValToChar(nResultado))
ReturnEval() proporciona dos argumentos y recibe 30, resultado de la última expresión.
User Function ExBloqueLista()
Local bCalcular := { |nValor| ConOut("Valor recibido: " + CValToChar(nValor)), nValor * 2 }
Local nResultado := Eval(bCalcular, 5)
MsgInfo("Doble: " + CValToChar(nResultado))
ReturnLas expresiones se ejecutan de izquierda a derecha y el retorno es 10, resultado de la última expresión.
User Function ExOrdenacao()
Local aNomes := {"CARLA", "ANDREA", "BEATRIZ"}
Local bDecrescente := { |cNome1, cNome2| cNome1 > cNome2 }
ASort(aNomes, , , bDecrescente)
ReturnEl bloque compara pares seleccionados por ASort() y permite orden descendente.
User Function ExReferencia()
Local bIncrementar := { |nValor| nValor += 1 }
Local nContador := 0
Eval(bIncrementar, nContador) // nContador continua 0
Eval(bIncrementar, @nContador) // nContador passa a 1
ReturnSin @, el bloque recibe una copia; con @, el cambio alcanza la variable original.
User Function ExContexto()
Local nContador := 0
Local bSomar := { |nValor| nContador += nValor }
Eval(bSomar, 5)
ConOut("Contador: " + CValToChar(nContador))
ReturnEl bloque referencia y modifica nContador en el contexto Local donde fue creado.
© 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.