Cirilo,
Algumas linguagens implementam uma passagem de parâmetros que chamamos de argumentos nomeados, as vezes ouço falar também como parâmetros nomeados.
Isso permite você identificar o parâmetro pelo nome e enviar por exemplo o trigésimo parâmetro como primeiro.
Umas das linguagens que implementa essa feature, é o Python. Veja um exemplo:
def divisao(primeiroValor, SegundoValor):
return primeiroValor / SegundoValor
divisao1 = divisao(9, 3)
divisao2 = divisao(SegundoValor=3, primeiroValor=9)
print(divisao1)
print(divisao2)
Se o que você deseja em ADVPL, é isso? Infelizmente, isso não existe.
O ADVPL hoje suporte o parâmetro do tipo JSON
, o que lhe permite declarar apenas um parâmetro, e dentro desse valor recebido, sendo um JSON, você pode possuir inúmeros valores, facilitando a implementação de novos valores e também o envio de dados:
function u_JsonParameter(jParameter as json)
//Processamento
return
u_JsonParameter({"valor1": 1, "valor2": 3})
u_JsonParameter({"valor3": 5, "valor7": 9})
Além do JSON, o ADVPL também permite a utilização do parâmetro do tipo Variadic
, ele permite receber inúmeros parâmetros, agrupando os mesmo em uma lista, é semelhante a um array, mas a diferença está na chamada da função:
function u_VariadicParameter(vValues as variadic)
local nRead as numeric
if ValType(vValues) != "U"
for nRead := 1 to vValues:vCount
Conout(vValues:vArgs[nRead])
next
endif
return
u_VariadicParameter(1, 2, 3, 4, 5, 6)
u_VariadicParameter(9 , 8, 7)
u_VariadicParameter(0)
Agora quanto as funções já existentes... O jeito é contar vírgula, eu costumo colocar um comentário com o nome do parâmetro para ficar mais fácil saber o que eu poderia estar enviando ali, leva mais tempo, fica mais extenso, mas evita erros e ajuda bastante durante a manutenção.
Documentações:
https://tdn.totvs.com/display/tec/Json
https://tdn.totvs.com/display/tec/Variadic