Blocos de código com parâmetros e Eval
Executa uma expressão parametrizada e usa seu retorno explicitamente.
Visão geral
Um bloco usa { |parâmetros| expressões } e recebe os valores informados a Eval após o próprio bloco. O retorno é a última expressão executada; um bloco vazio retorna Nil. Os parâmetros são locais ao bloco; capturar uma variável do chamador é outra forma de vínculo, com efeitos sobre memória e duração do contexto. O exemplo limita-se a dois números e uma soma, sem macroexecução de texto. Em callbacks de interface ou ASort, respeite os argumentos e o tipo de retorno definidos pelo componente chamador. (TOTVS, s.d., refs. 1–2)
Retorno
Não há retorno único: trata-se de um roteiro composto.
Exemplo comentado
#Include "Protheus.ch"
User Function EdBloco()
Local bSomar := {|nUm, nDois| nUm + nDois}
Local nTotal := Eval(bSomar, 7, 3)
// Criar o bloco nao executa a expressao.
ConOut(cValToChar(nTotal))
Return NilResultado esperado: 10. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Manter blocos curtos. Validar tipos no contrato do chamador e evitar guardar callbacks indefinidamente ou avaliar texto de origem não confiável.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.