Parâmetros da função

Bom dia pessoal, estou começando com Protheus e estou criando um fonte em tlpp, criei um objeto e também uma função com parâmetros, ao chamar a função eu não informei os parâmetros, mas compilou normalmente... me casou estranheza, pois em outras linguagem se minha função tem parâmetros, em vias normais eu preciso informa-los. Aproveitando o gancho uma outra perguntar, tlpp trabalha com parâmetros nomeados?

Obrigado desde já.

Olá,

Em ADVPL ou TLPP não existem parâmetros nomeados.

Quanto a não enviar os parâmetros, por padrão, todo parâmetro em ADVPL ou TLPP é opcional, você pode declarar um método/função com dez parâmetros e não enviar nenhum deles. Para enviar somente um parâmetro não sendo o primeiro, você deve ignorar os anteriores usando uma vírgula, basicamente enviando null:


#include "protheus.ch"

user function xisto(p1, p2, p3)
return

user function callXisto()
u_xisto(,2,3) //Enviar somente os últimos parâmetros
u_xisto(,,3) //Enviar só o terceiro parâmetro
u_xisto(,2) //Enviar só o segundo parâmetro
u_xisto(1) //Enviar só o primeiro parâmetro
return

Esclarecido, obrigado Daniel.

Atualmente o compilador apresenta alguns alertas sobre parâmetros em casos específicos (como passar mais parâmetros que a função aceita). Caso queria e ache mais seguro, pode utilizar o ParamType para fazer estas validações em tempo de execução, seria bom se pudesse ser em tempo de compilação, mas não é. Ex.:


#Include "ParmType.ch"
ParamType 0        VAR cChave    AS Character              //Parametro character obrigatório
ParamType 1        VAR nPos      AS Numeric      Opcional  //Numérico opcional com default NIL
ParamType 3        VAR lMsg      AS Logical      Opcional Default .T. //Numérico opcional com default .T.