Tempo de leitura: 2 minutos
A função Eval em ADVPL executa um bloco de código passado como parâmetro. Ela é uma das funções de manipulação de bloco de códigos em ADVPL.
Sintaxe:
Eval(bBloco,xExp)
Parâmetro(s):
Retorno:
Exemplo da função Eval em ADVPL:
#include 'protheus.ch'
/*{Protheus.doc} User Function fEval
(Essa função tem por finalidade mostrar a função de manipulação de blocos de código Eval em ADVPL)
@type Function
@author Adilio Costa
@since 30/06/2023
@version 1.0
@Participe de nossas comunidades no WhatsApp:
-Comunidade Protheus Backoffice:https://chat.whatsapp.com/KMUIAjwZ6EZ6eAHsLkPTyb
-Comunidade Protheus-RH:https://chat.whatsapp.com/L5dUyAna6xU4ylG5DUgfOW
-Comunidade Protheus-Programação:https://chat.whatsapp.com/LsD6z0apdqKHlOz67bcaEn
-Comunidade Protheus-Framework:https://chat.whatsapp.com/BzUFpjaSnTC3vtsfa77jmG
*/
//Exemplo da função Eval
User Function fEval()
Local bSoma := {|nVal| Y:=nVal+12, X:=Y*nVal}
Local xExp := 2
Local xRetorno := Eval(bSoma,xExp)
MsgInfo("O resultado de bSoma é:"+cValToChar(xRetorno), "Função Eval")
Return
No código ADVPL acima nós criamos um bloco código chamado bSoma que recebe como parâmetro nVal depois iremos somar o conteúdo de nVal com 12 e atribuir o resultado a Y, ao final multiplicamos o conteúdo de Y por nVal e atribuímos o resultado a X, assim o conteúdo de X será o resultado do bloco de código bSoma. Depois disso passamos à função Eval o bloco de código bSoma e o valor 2(xExp). Quando Eval executar o bloco de código o valor de nVal será 2, esse valor será somado a 12 e atribuído a Y, Y ficará com o conteúdo 14, ao final na última expressão executada no bloco de código Y será multiplicado por nVal, ou seja, 14x2 e o resultado 28 será atribuído a X, assim a variável xRetorno será igual a 28:

É isso aí, finalizamos mais um post aqui no Blog ProtheusAdvpl, caso tenha ficado alguma dúvida deixe seu comentário ou nos envie um e-mail para adiliocosta@protheusadvpl.com.br. Até um próximo post. Grande abraço e fica com Deus.
Link(s) de referência: