Help:Parser functions in templates/pt

Ao aplicar funções do analisador sintático aos parâmetros das predefinições, pode usar uma barra vertical ("|") para fornecer um valor por omissão, que será adotado como valor se o parâmetro não for passado (estiver indefinido). Usado numa função #if, o texto não expandido do parâmetro indefinido é avaliado como verdadeiro, o que pode ser um resultado inesperado.




 * Exemplo A:


 * Resultado:




 * Exemplo B:


 * Resultado:

O segundo caso (, exemplo B), em que o parâmetro é passado e vazio, é frequentemente a forma desejada para lidar com as situações em que o parâmetro existe, mas consiste só de espaço vazio.

Testar e passar parâmetros indefinidos (não passados)
Para distinguir entre um parâmetro passado mas possivelmente vazio e um parâmetro indefinido (não passado), compare-o a si próprio usando  e use "diferentes valores por omissão". Os valores por omissão usados são indiferentes desde que sejam distintos, portanto tipicamente usam-se valores curtos. Os seguintes exemplos são todos equivalentes:



Em casos raros, uma predefinição pode comportar-se de formas diferentes quando não é passado um parâmetro e quando este é passado mas está vazio. Se a predefinição for usada dentro de uma segunda predefinição (que use os mesmos parâmetros e com o mesmo nome), uma forma de garantir que os parâmetros não passados continuam indefinidos é a seguinte (a técnica também funciona para parâmetros numerados):





Se normal_parameter for passado e não estiver vazio,  recebe-o em todos os casos. Se normal_parameter for passado mas estiver vazio, e se não for passado,  recebe um normal_parameter vazio.

Em contraste, só se sensitive_parameter for passado definido,  receberá um parâmetro definido; se sensitive_parameter não for passado e estiver indefinido, o   altera o nome do parâmetro para sensitive_parameterNULL. Para que o comportamento seja o esperado, este nome de parâmetro com sufixo tem de não ter significado para.

Ver também

 * Extension:Loops#forargs
 * Extension:Loops#forargs
 * Extension:Loops#forargs