WikiDer > Справка: Условные выражения - Википедия
![]() | Эта справочная страница является практическое руководство. В нем подробно описаны процессы или процедуры некоторых аспектов норм и практики Википедии. Это не один из Политика или рекомендации Википедии, и может отражать разные уровни консенсус и проверка. |
Эта страница, Справка: условные выражения, описывает способы отображения различных результатов в зависимости от условий проверки на странице или шаблон. В функции парсера используется для оценки условные выражения включите имена функций: #ifexpr
, #ifeq
, #выключатель
, #если
, и #iferror
или же #ifexist
. Каждое имя функции связано с пояснениями ниже.
- С помощью
#ifeq
можно сравнить 2 строки или числа. - Но
#ifexpr
можно проверить математическую формулу или несколько условий. - В
#выключатель
функция может разветвляться на десятки или сотни различных путей в зависимости от значения, чтобы действовать как заявление о случае выбирать среди альтернатив. - С помощью
#если
может проверить, был ли передан параметр, или оценивается ли выражение как истинное. - С помощью
#iferror
может проверить, вызывает ли значение выражения ошибку, иначе отображается значение. - Пока
#ifexist
может проверить, существует ли еще имя страницы или файл изображения / мультимедиа.
Обратите внимание, что все лишние пробелы внутри внешних фигурных скобок удаляются, поэтому это позволяет форматировать эти конструкции для лучшей читаемости. Например:
{{#если: {{{xx |}}} | параметр xx передан | параметр xx опущен}}
В тексте появляются только пробелы по обе стороны от xx.
Резюме условных выражений
Быстрый формат каждой функции следующий (вы можете увидеть примеры функций ниже):
{{#если: тестовая строка | значение, если не пусто | значение, если пусто }}
(выбирает одно из двух значений в зависимости от того, пуста ли тестовая строка){{#ifeq: строка 1 | строка 2 | значение, если равно | значение, если неравно }}
(выбирает одно из двух значений в зависимости от того, равны ли тестовые строки - численно, если применимо){{#iferror: тестовая строка | значение, если ошибка | значение, если верно }}
(выбирает значение в зависимости от того, генерирует ли тестовая строка ошибку парсера){{#ifexpr: выражение | значение, если правда | значение, если ложь }}
(выбирает значение на основе оценки выражения){{#ifexist: Заголовок страницы | значение, если существует | значение, если не существует }}
(выбирает значение в зависимости от того, существует ли заголовок страницы){{#выключатель: тест | Случай 1 = значение для случая 1 | ... | дефолт }}
(предоставляет альтернативы на основе значения тестовой строки; см. контрольные примеры.){{#expr: выражение }}
(оценивает данное выражение; см. Справка: Расчет)
В волшебные слова могут использоваться вместе во вложенных комбинациях для перехода по сложным условиям. Некоторые комбинации могут использовать уловки, основанные на взаимодействии между ними.
Обратите внимание, что с #если
выражения, используя позиционный параметр, это параметр в виде "{{{1}}}"
всегда требует финала вертикальная полоса "|"
в параметре: {{{1|}}}
. Если полоса / трубка опущена, то всякий раз, когда параметр 1 отсутствует, вместо того, чтобы оставить поле пустым, на странице будет использоваться буквальный текст "{{{1}}}
"(как 3 набора фигурных скобок вокруг" 1 "), а #если
будет истинным, если параметр 1 не будет передан как пустая строка, например "1 =".
С помощью #если
С помощью #если
может проверить, был ли передан параметр.
Эта функция оценивает тестовую строку и определяет, пуста она или нет. Тестовая строка, содержащая только пробелы, считается пустой.
:{{#если: тестовая строка | значение, если тестовая строка не пуста | значение, если тестовая строка пуста (или только пробел) }}
Примеры:
{{#если: {{{1|}}} | параметр 1 имеет данные | параметр 1 пуст или опущен}} {{# если: {{{xx |}}} | параметр xx передан | параметр xx пуст или опущен}} {{# если: {{{xx |}}}{{{гг |}}} | xx и / или yy пройдены | оба xx и yy пусты / опущены}}
С помощью #ifeq
С помощью #ifeq
можно сравнить 2 струны или числа (но не числовые выражения: 1 + 1). Функция парсера #ifeq
сравнивает два значения и определяет, идентичны ли они.
:{{#ifeq: строка 1 | строка 2 | значение, если идентично | значение, если другое }}
Если обе строки являются допустимыми числовыми значениями, строки сравниваются как числа, а не как буквальный текст:
{{#ifeq: 01 | 1 | равно | не равный}}
→ равный{{#ifeq: x01 | x1 | равно | не равный}}
→ не равный{{#ifeq: 2.000 | 002 | равно | не равный}}
→ равный{{#ifeq: 2.5 | 2 + .5 | равно | не равный}}
→ не равный (использовать#ifexpr
для арифметики)
{{#ifeq: {{#expr: 10 ^ 3}} | 1000 | равно | не равный}}
→ равный
Сравнение чувствительный к регистру, проверяя соответствие заглавным буквам:
{{#ifeq: King | король | равно | не равный}}
→ не равный{{#ifeq: {{lc: TopCat}} | topcat | равно | не равно}}
→ равный{{#ifeq: {{lc: {{{catname}}}}} | topcat | равно | не равно}}
Итак, при проверке значения параметра с именем "{{{catname}}}
"тогда функция {{lc: ___}}
может использоваться для мгновенного преобразования текста в нижний регистр во время сравнения. Значение {{{catname}}}
не будет изменен для дальнейшего использования, вместо этого он сравнивается только как строчные буквы.
{{#ifeq: {{{n}}} | 1 | единственное | множественное число}}
→ множественное число (Для большинства языков, включая английский, {{Множественное число| lang = xx | {{{n}}} | единственное число | множественное число }} в точности эквивалентен).
С помощью #ifexpr
С помощью #ifexpr
может проверить математическую формулу или несколько условий. #ifexpr
оценивает математическое выражение или же логическое выражение и ветвления в зависимости от логического значения true / false результата (где ноль означает ложный):
:{{#ifexpr: выражение | значение, если правда | значение, если ложь }}
Примеры:
{{#ifexpr: ({{{1}}} + {{{2}}}) * 2,63> 45 | выше 45 | не выше 45}}
{{#ifexpr: {{{1}}}> 0 и {{{1}}} <1.0 или {{#ifeq: {{{decimal}}} | да}} | десятичное | не десятичное}}
В выражение
результат оценивается точно так же, как и для функции #expr
, при этом доступны те же операторы. Затем результат оценивается как логическое выражение.
Пустое входное выражение оценивается как ложное:
{{#ifexpr: | да | нет}}
→ нет
Как упоминалось выше, ноль оценивается как ложь, а любое ненулевое значение (например, 6.7) оценивается как истинное.
Неверные данные отобразят сообщение об ошибке. Однако функция #ifexpr
эквивалентно использованию #ifeq
с #expr
внутри, но переворачивая предложения true / false (then / else):
{{#ifeq: {{#expr: выражение }} | 0 | значение, если ложь | значение, если правда }}
Недопустимое или неправильное входное выражение вызовет часть истинного значения (сообщение об ошибке рассматривается как обычная строка; оно не равно нулю, поэтому мы получаем значение, если ложь
).
{{#ifexpr: = | да | нет }}
→ Ошибка выражения: неожиданный = оператор{{#ifeq: {{#expr: =}} | 0 | да | нет }}
→ нет
Одно или оба возвращаемых значения могут быть опущены; ничего не выводится, если соответствующая ветка остается пустой:
{{#ifexpr: 1> 0 | да }}
→ да{{#ifexpr: 0 = 0 | да }}
→ да{{#ifexpr: 1> 0 | | нет}}
→
Кончик Чтобы проверить сравнения на основе дат (если текущая дата и время позже других даты и времени), сначала преобразуйте время в количество секунд после 1 января 1970 г., используя функцию {{#time: U}}, затем просто складывайте и вычитайте даты. |
С помощью #выключатель
В #выключатель
функция может разветвляться на десятки или сотни различных путей в зависимости от значения, чтобы действовать как заявление о случае который выбирает среди альтернатив. А #выключатель
выражение - это быстрый способ обработки нескольких значений кода для параметра без использования большого количества #если
функции; однако производительность снижается при использовании более 100 ветвей, и общие значения должны быть указаны выше среди вариантов, чтобы работать в 3-8 раз быстрее. В редких случаях #выключатель
может иметь более двух тысяч ветвей, но требуется время, чтобы просканировать все ветки, даже до сравнения значений.
В #выключатель функция может быть однострочной формой:
{{#выключатель: {{{Икс}}} | 1 = один | 2 = два | 3 | 4 | 5 = диапазон 3–5 | другое}}
Эта однострочная #выключатель прочитал бы значение {{{Икс}}}. Для значения 1 он вернет «один». Для значения 2 будет возвращено «два». Для значений 3, 4 или 5 будет возвращен «диапазон 3–5». Для любого другого значения или нулевого значения он вернет «другое».
Однако во многих случаях #выключатель Функция - это многострочная форма, каждая ветвь которой находится на отдельной строке, как показано ниже:
{{#выключатель: {{{Икс}}} | 1 = один | 2 = два | #default = other | 3 | 4 | 5 = любое из 3–5 | {{#expr: 2 * 3}} = шесть | {{#expr: 2 * 3 + 1}} = {{lc: SEVEN}} <!--lowercase ->}}
Это иллюстрирует альтернативный метод указания регистра по умолчанию, который может быть первым, последним или где-то между ними.
Если значение по умолчанию не указано и ни один регистр не соответствует указанному значению, возвращается значение NULL.
Для каждой ветви #выключатель, любая сторона знака равенства «=» может быть простым значением, выражением или вызовом шаблона.
Видеть: Справка: переключение функции парсера, полное описание и примеры.
С помощью #iferror
С помощью #iferror
может проверить, вызывает ли значение выражения ошибку, чтобы затем что-то сделать для этого условия, иначе он покажет значение, которое проверялось.
Эта функция принимает входную строку и возвращает один из двух результатов; функция оценивается как истинный
если входная строка содержит объект HTML с class = "error"
, шаблон такие ошибки, как циклы и рекурсии, а также другие ошибки "отказоустойчивого" парсера:
{{#iferror: тестовая строка | значение, если ошибка | значение, если верно }}
(выбирает значение в зависимости от того, вызывает ли тестовая строка ошибку парсера).
Одна или обе возвращаемые строки могут быть опущены. Если правильная строка опущена, возвращается тестовая строка, если она не ошибочна. Если строка ошибки также опущена, при ошибке возвращается пустая строка:
{{#iferror: {{#expr: 1 + 2}} | ошибка | правильный }}
→ правильный{{#iferror: {{#expr: 1 + X}} | ошибка | правильный }}
→ ошибка{{#iferror: {{#expr: 1 + 2}} | ошибка }}
→ 3{{#iferror: {{#expr: 1 + X}} | ошибка }}
→ ошибка{{#iferror: {{#expr: 1 + 2}}}}
→ 3{{#iferror: {{#expr: 1 + X}}}}
→ {{#iferror: {{#expr:. }} | ошибка | правильный }}
→ правильный{{#iferror: a | ошибка | правильный }}
→ ошибка
С помощью #ifexist
Функция #ifexist
может проверить, существует ли имя страницы или файл изображения / мультимедиа. Это очень быстро, но было ограничено 500 экземплярами на страницу.
{{#ifexist: Заголовок страницы | значение, если существует | значение, если не существует }}
(выбирает значение в зависимости от того, существует ли заголовок страницы)
Функция оценивается как истинный
если страница существует, независимо от того, содержит ли она контент, выглядит пустой (содержит метаданные, такие как ссылки на категории или волшебные слова, но без видимого содержимого), пустое или перенаправить. Только страницы, на которые есть красные ссылки, оцениваются как ложный
, в том числе, если страница существовала, но была удалена.
С помощью #expr
С помощью #expr
может оценивать математическое или логическое выражение, увеличивать сравнение и обрабатывать сообщения об ошибках.
{{#expr: выражение }}
Примеры:
{{#expr: ({{{1}}} + {{{xshift}}} - 6) * 18.4}}
{{#expr: ln (7) ^ 3 - abs (-0,344) + floor (5/3) round 3}}
{{#expr: {{{n}}}> 0 и {{{n}}} <1.0}}
Условные выражения для шаблонов
Чтобы отличить параметр шаблона (например, {{{1}}}) от определенного и непустого, с одной стороны, или неопределенного или пустого, с другой стороны, используйте #if: с пустым значением по умолчанию:
{{#if: {{{param |}}} | параметр определен и непустой | параметр не определен или пуст}}.
Чтобы различать определенные (и, возможно, пустые) и неопределенные, используйте:
{{#ifeq: {{{param | +}}} | {{{param | -}}} | параметр определяется | параметр не определен}}.
Смотрите также
- Справка: условные таблицы
- mw: Справка: Расширение: Функции парсера, более длинная и подробная техническая справочная страница на MediaWiki.org
- Условный (компьютерное программирование)
- Оператор отношения
- Справка: шаблон и Википедия: песочница и тестовые примеры шаблонов
- m: Справка: Расширенные шаблоны
- Категория: Шаблоны If-then-else
- {{Ifequal}}