De Wikipedia, la enciclopedia libre
Ir a navegaciónSaltar a buscar

Esta página, Ayuda: Expresiones condicionales , describe formas de mostrar diferentes resultados según las condiciones de verificación en una página o plantilla . Las funciones del analizador utilizados para evaluar las expresiones condicionales incluyen los nombres de función: #ifexpr, #ifeq, #switch, #if, y #iferroro #ifexist. Cada nombre de función se ha vinculado a las explicaciones siguientes.

  • Usando #ifeqpuede comparar 2 cadenas o números.
  • Pero #ifexprpuede verificar una fórmula matemática o múltiples condiciones.
  • La #switchfunción puede ramificarse a docenas o cientos de rutas diferentes dependiendo de un valor, para actuar como una declaración de caso para elegir entre alternativas.
  • El uso #ifpuede verificar si se ha pasado un parámetro o si una expresión se evalúa como verdadera.
  • El uso #iferrorpuede verificar si un valor de expresión desencadena un error; de lo contrario, muestra el valor.
  • Si bien, #ifexistpuede verificar si existe un nombre de página o un archivo de imagen / multimedia.

Tenga en cuenta que todo el espacio en blanco adicional dentro de las llaves externas se elimina, por lo que esto permite formatear estas construcciones para una mejor legibilidad. Por ejemplo:

{{#if: {{{ xx | }}} | parámetro xx pasado | parámetro xx omitido
}}

Solo los espacios a ambos lados de la xx aparecen en el texto.

Resumen de expresiones condicionales

El formato rápido de cada función es el siguiente (puede ver ejemplos de funciones a continuación):

  • {{#if: test string | value if non-empty | value if empty }} (selecciona uno de dos valores en función de si la cadena de prueba está vacía)
  • {{#ifeq: string 1 | string 2 | value if equal | value if unequal }} (selecciona uno de dos valores en función de si las cadenas de prueba son iguales, numéricamente si corresponde)
  • {{#iferror: test string | value if error | value if correct }} (selecciona el valor en función de si la cadena de prueba genera un error del analizador)
  • {{#ifexpr: expression | value if true | value if false }} (selecciona el valor basándose en la evaluación de la expresión)
  • {{#ifexist: page title | value if exists | value if doesn't exist }} (selecciona el valor dependiendo de si existe un título de página)
  • {{#switch: test | case1 = value for case 1 | ... | default }}(proporciona alternativas basadas en el valor de la cadena de prueba; consulte los casos de prueba ).
  • {{#expr: expression }}(evalúa la expresión dada; consulte Ayuda: Cálculo )

Las palabras mágicas se pueden usar juntas, en combinaciones anidadas, para ramificarse en condiciones complejas. Algunas combinaciones pueden usar trucos basados ​​en las interacciones entre ellos.

Tenga en cuenta que con #iflas expresiones, usando un parámetro de posición , esto es, un parámetro en forma "{{{1}}}"siempre requiere de una final de barra vertical "|" en el parámetro: {{{1|}}}. Si se omite la barra / tubería, siempre que el parámetro 1 esté ausente, en lugar de dejar el campo en blanco, la página utilizará el texto literal " {{{1}}}" (como 3 juegos de llaves alrededor de un "1"), y #ifse Es verdadero a menos que el parámetro 1 se pase como una cadena vacía, como "1 =".

Usando #if

El uso #ifpuede comprobar si se ha pasado un parámetro.

Esta función evalúa una cadena de prueba y determina si está vacía o no. Una cadena de prueba que contiene solo espacios en blanco se considera vacía.

:{{#if: test string | value if test string is not empty | value if test string is empty (or only white space) }}

Ejemplos:

{{#if: {{{ 1 | }}} | el parámetro 1 tiene datos | el parámetro 1 está vacío u omitido
}}
{{#if: {{{ xx | }}} | parámetro xx pasado | el parámetro xx está vacío u omitido
}}
{{#if: {{{ xx | }}} {{{ yy | }}} | xx y / o yy pasaron | tanto xx como yy están vacíos / omitidos
}}

Usando #ifeq

El uso #ifeqpuede comparar 2 cadenas o números (pero no expresiones numéricas : 1 + 1). La función del analizador #ifeqcompara dos valores y determina si son idénticos.

:{{#ifeq: string 1 | string 2 | value if identical | value if different }}

Si ambas cadenas son valores numéricos válidos, las cadenas se comparan como números, en lugar de texto literal:

{{#ifeq: 01 | 1 | equal | not equal}}igual
{{#ifeq: x01 | x1 | equal | not equal}}no es igual
{{#ifeq: 2.000 | 002 | equal | not equal}}igual
{{#ifeq: 2.5 | 2+.5 | equal | not equal}}no es igual (se usa #ifexprpara aritmética)
{{#ifeq: {{#expr:10^3}} | 1000 | equal | not equal}}igual

La comparación distingue entre mayúsculas y minúsculas , verificando que coincidan con las letras mayúsculas:

{{#ifeq: King | king | equal | not equal}}no es igual
{{#ifeq: {{lc:TopCat}} | topcat |equal|not equal}}igual
{{#ifeq: {{lc:{{{catname}}} }} | topcat |equal|not equal}}

Entonces, al verificar el valor de un parámetro llamado " {{{catname}}}", la función {{lc:___}}se puede usar para convertir instantáneamente a texto en minúsculas, durante la comparación. El valor de {{{catname}}}no se cambiará para su uso posterior, sino que solo se compara como letras minúsculas.

{{#ifeq: {{{n}}} | 1 | singular | plural}}plural (Para la mayoría de los idiomas, incluido el inglés, {{ Plural |  lang = xx  |  {{{n}}}  |  singular  | plural  }} es exactamente equivalente).

Usando #ifexpr

El uso #ifexprpuede verificar una fórmula matemática o múltiples condiciones. La función del analizador #ifexprevalúa una expresión matemática o una expresión booleana y se ramifica según el valor booleano verdadero / falso del resultado (donde cero significa falso ):

:{{#ifexpr: expression | value if true | value if false }}
Ejemplos:

{{#ifexpr: ( {{{1}}}+{{{2}}} ) * 2.63 > 45 |above 45 |not above 45}}
{{#ifexpr: {{{1}}} > 0 and {{{1}}} < 1.0 or {{#ifeq:{{{decimal}}}| yes}} |is decimal |not decimal}}

El expressionresultado se evalúa exactamente de la misma manera que para la función #expr, estando disponibles los mismos operadores. Luego, la salida se evalúa como una expresión booleana.

Una expresión de entrada vacía se evalúa como falsa:

{{#ifexpr: | yes | no}}no

Como se mencionó anteriormente, cero se evalúa como falso y cualquier valor distinto de cero (como 6.7) se evalúa como verdadero.

Los datos no válidos mostrarán un mensaje de error. Sin embargo, la función #ifexpres equivalente a usar #ifeqcon #exprinside, pero cambiando las cláusulas verdadero / falso (luego / si no):

{{#ifeq: {{#expr: expression }} | 0 | value if false | value if true }}

Una expresión de entrada incorrecta o no válida activará la parte de valor verdadero (un mensaje de error se trata como una cadena ordinaria; no es igual a cero, por lo que obtenemos value if false).

{{#ifexpr: = | yes | no }}Error de expresión: inesperado = operador
{{#ifeq: {{#expr: = }} |0 | yes | no }}no

Se pueden omitir uno o ambos valores devueltos; no se da salida cuando la rama apropiada se deja vacía:

{{#ifexpr: 1 > 0 | yes }}si
{{#ifexpr: 0 = 0 | yes }}si
{{#ifexpr: 1 > 0 | | no}}

Usando #switch

La #switchfunción puede ramificarse a docenas o cientos de rutas diferentes dependiendo de un valor, para actuar como una declaración de caso que elige entre alternativas. Una #switchexpresión es una forma rápida de manejar múltiples valores de código para un parámetro, sin usar muchas #iffunciones; sin embargo, el rendimiento se ralentiza cuando hay más de 100 bifurcaciones, y los valores comunes deben figurar más arriba entre las opciones para que se ejecuten entre 3 y 8 veces más rápido. En raras ocasiones, a #switchpodría tener más de dos mil sucursales, pero solo se necesita tiempo para escanear todas las sucursales, incluso antes de comparar los valores.

La función #switch puede tener un formato de una línea:

{{#interruptor: {{{ x }}} | 1 = uno | 2 = dos | 3 | 4 | 5 = rango 3–5 | otro}}

Ese #interruptor de una línea leería el valor de {{{x}}} . Para un valor de 1, devolvería "uno". Para un valor de 2, devolvería "dos". Para los valores 3, 4 o 5 devolvería “rango 3-5”. Para cualquier otro valor, o un valor nulo, devolvería "otro".

Sin embargo, en muchos casos, la función #switch es un formulario de varias líneas, con cada rama en una línea diferente, de la siguiente manera:

{{#switch: {{{ x }}} | 1 = uno | 2 = dos | #predeterminado = otro | 3 | 4 | 5 = cualquiera de 3-5 | {{#expr: 2 * 3}} = seis | {{#expr: 2 * 3 + 1}} = {{lc: SIETE}} < ! --minúsculas ->
}}

Esto ilustra un método alternativo para especificar el caso predeterminado, que puede aparecer primero, último o en cualquier lugar intermedio.

Si no se especifica ningún valor predeterminado y ningún caso coincide con el valor proporcionado, se devuelve un valor nulo.

Para cada rama de un conmutador # , cualquier lado de un signo igual "=" puede ser un valor simple, una expresión o una llamada de plantilla.

Consulte: Ayuda: Cambiar la función del analizador , para obtener una descripción completa y ejemplos.

Usando #iferror

El uso #iferrorpuede verificar si un valor de expresión desencadena un error, para luego hacer algo para esa condición, de lo contrario, muestra el valor que se estaba probando.

Esta función toma una cadena de entrada y devuelve uno de dos resultados; los evalúa la función a truesi la cadena de entrada contiene un objeto HTML con class="error", plantilla errores tales como bucles y recursividad, y otros "failsoft" errores del analizador:

{{#iferror: test string | value if error | value if correct }} (selecciona el valor en función de si la cadena de prueba genera un error del analizador).

Se pueden omitir una o ambas cadenas de retorno. Si se omite la cadena correcta, la cadena de prueba se devuelve si no es errónea. Si también se omite la cadena de error, se devuelve una cadena vacía en caso de error:

{{#iferror: {{#expr: 1 + 2 }} | error | correct }}correcto
{{#iferror: {{#expr: 1 + X }} | error | correct }}error
{{#iferror: {{#expr: 1 + 2 }} | error }}3
{{#iferror: {{#expr: 1 + X }} | error }}error
{{#iferror: {{#expr: 1 + 2 }} }}3
{{#iferror: {{#expr: 1 + X }} }}
{{#iferror: {{#expr: . }} | error | correct }}correcto
{{#iferror: <strong class="error">a</strong> | error | correct }}error

Utilizando #ifexist

La función #ifexistpuede verificar si existe un nombre de página o un archivo de imagen / multimedia. Es extremadamente rápido, pero se ha limitado a 500 instancias por página.

{{#ifexist: page title | value if exists | value if doesn't exist }} (selecciona el valor dependiendo de si existe un título de página)

La función evalúa truesi la página existe, si contiene contenido, está visiblemente en blanco (contiene metadatos como enlaces de categorías o palabras mágicas , pero no hay contenido visible), está en blanco o es una redirección . Solo se evalúan las páginas con enlaces rojos false, incluso si la página solía existir pero se ha eliminado.

Usando #expr

El uso #exprpuede evaluar una expresión matemática o booleana, para aumentar las comparaciones y manejar mensajes de error.

{{#expr: expression }}

Ejemplos:

{{#expr: ( {{{1}}}+{{{xshift}}} - 6 ) * 18.4}}
{{#expr: ln(7)^3 - abs(-0.344) + floor(5/3) round 3 }}
{{#expr: {{{n}}}>0 and {{{n}}}<1.0 }}

Condicionales para plantillas

Para distinguir entre un parámetro de plantilla (por ejemplo, {{{1}}}) que está definido y no está vacío por un lado, o indefinido o vacío por otro lado, use #if: con un valor predeterminado en blanco:

{{#if: {{{param |}}} | param está definido y no está vacío | param no está definido o está vacío}}.

Para distinguir entre definido (y posiblemente vacío) e indefinido, use:

{{#ifeq: {{{param | +}}} | {{{param | -}}} | param está definido | param no está definido}}.

Ver también

  • Ayuda: tablas condicionales
  • mw: Help: Extension: ParserFunctions , una página de ayuda más extensa y técnica en MediaWiki.org
  • Condicional (programación informática)
  • Operador relacional
  • Ayuda: plantilla y Wikipedia: caja de arena de plantilla y casos de prueba
  • m: Ayuda: Plantillas avanzadas
  • Categoría: Plantillas If-then-else
  • {{ Ifequal }}