Árvore de páginas

TLPP - LANGUAGE

Abrangência

A partir da versão 20.3.2.0 do Application Server, será possível chamar funções ou métodos em TLPP utilizando o recurso de passagem de parâmetros pelo nome.


Seja uma função xParams de 8 parâmetros:

Exemplo - Uma função de 8 parâmetros
Function xParams(p1, p2, p3, p4, p5, p6, p7, p8)
Return .T.


No modo convencional, que vale tanto para PRW quanto para TLPP, podemos chamar a função xParams

  • passando todos os parâmetros;
  • passando apenas os primeiros;
  • deixando vazio um ou mais parâmetros intermediários.


Exemplo - Formas tradicionais de chamar xParams
xParams(a, b, c, d, e, f, g, h)
xParams(a, b, c, d)
xParams(a, b,  ,  ,  ,  , g, h)


Com o novo recurso de parâmetros nomeados, podemos continuar fazendo do modo tradicional ou, se preferirmos, aproveitar a facilidade da passagem nomeada:

Exemplo - Forma moderna de chamar xParams (passagem nomeada)
xParams(p2=b, p1=a, p6=f) // todos nomeados (fora de ordem, inclusive)
xParams(a, b, p7=g, p8=h) // a e b de modo tradicional, g e h pelo recurso nomeado



Esse recurso vale só para TLPP ?

  • TLPP e PRW são beneficiados.
  • Só precisa saber que:
    • a chamada da função ou método precisa partir do TLPP. (concordo)
    • mas a função ou método chamado, pode estar implementado tanto em TLPP quanto em PRW. (grande sorriso)

Tem alguma dica de onde aplicar?

  • Temos sim, uma super dica. (piscar o olho)
  • Sabe aquelas funções com muitos parâmetros, que dificulta saber a posição exata de cada um deles?
  • Então, agora com parâmetros nomeados, a gente pode deixar de encher de vírgulas e passar simplesmente os nomes dos parâmetros que a gente quer fornecer.
  • Assim, ajuda muito a legibilidade do programa, facilita o desenvolvimento e melhora a qualidade. (grande sorriso)


E se o parâmetro for tipado?

  • Esse é um excelente ponto.
  • A passagem por nome convive perfeitamente com a checagem de tipos.
  • As mesmas validações feitas na passagem tradicional são também realizadas na passagem nomeada.
  • E vamos te mostrar um exemplo disso (abaixo). 
Exemplo - parâmetros nomeados x tipagem
// Uma função com tipagem de parâmetros
Function xFunc(nParm as numeric, cParm as character, lParm as logical)
Return .T.

//Em outro lugar ou em outro fonte, algumas chamadas para essa função
xFunc(nParm=10, lParm=.F., cParm='textual') // chamada ok
xFunc(nParm=10, lParm=0, cParm='textual')   // incompatibilidade de tipos em lParm (esperado 'L' e chegando 'N')



  • Sem rótulos