社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103
全站通知:
帮助:解析函数/switch
刷
历
编
< 帮助:解析函数
跳到导航
跳到搜索
多分支语句,类似于编程语言中的switch。
其第一个参数是要进行条件判断的表达式或值。后续的参数是一系列的条件和对应的结果。
出自扩展 ParserFunctions。
- 格式
- {{#switch: 表达式|case1 = 结果1|case2 = 结果2|case3 = 结果3|...|caseN = 结果N|默认}}
- {{#switch: 表达式|case1 = 结果1|case2 = 结果2|case3 = 结果3|...|caseN = 结果N|#default = 默认}}
- 例子
- {{#switch: baz|foo = Foo|baz = Baz|Bar}}→
Baz
- {{#switch: foo|foo = Foo|baz = Baz|Bar}}→
Foo
- {{#switch: zzz|foo = Foo|baz = Baz|Bar}}→
Bar
#switch
和部分转换标签可以作用于配置文件,从而可以使不熟悉模板代码的编辑者编辑可配置元素。- 关于默认结果
- 在当没有'情况字串'与'比较字串'相符时,会返回'默认结果':
- {{#switch: test|foo = Foo|baz = Baz|Bar}}→
Bar
- 按这个函数的句法,'默认结果'必须是最后一个参数,并且不能包含原始等号符。
- {{#switch: test|Bar|foo=Foo|baz=Baz}}→
- {{#switch: test|foo=Foo|baz=Baz|B=ar}}→
- 或者'默认结果'可以用'情况字串'
#default
来特别声明。 - 用这种方式声明的'默认结果'可以放在函数内的任何位置:
- {{#switch: test|foo=Foo|#default=Bar|baz=Baz}}→
Bar
- 如果'默认结果'被省略,当没有相符情况时,不会返回结果:
- {{#switch: test|foo=Foo|baz=Baz}}→
- 一组情况的结果
- 可以使用“fallthrough”值,即若干'情况字串'返回相同的'返回结果'。这能减少重复。
- {{#switch: 比较字串
|情况字串1 = 返回结果1
|情况字串2
|情况字串3
|情况字串4 = 返回结果234
|情况字串5 = 返回结果5
|情况字串6
|情况字串7 = 返回结果67
|#default = 默认结果
}}
- 在这里情况2、3、4都会返回“返回结果234”,情况6、7都会返回“返回结果67”。
- 关于比较
- 与
#ifeq
相同,如果'比较字串'和'情况字串'都为数值,则会按照数值进行比较。以上情况外,区分大小写:- {{#switch: 0 + 1|1 = one|2 = two|three}}→
three
- {{#switch:→{{#expr: 0 + 1}}|1 = one|2 = two|three}}
one
- {{#switch: a|a = A|b = B|C}}→
A
- {{#switch: A|a = A|b = B|C}}→
C
- '情况字串'可以是空:
- {{#switch:|= Nothing|foo = Foo|Something}}→
Nothing
- 当出现一个相符情况后,之后的'情况字串'会被忽略:
- {{#switch: b|f = Foo|b = Bar|b = Baz|}}→
Bar
- 注意
#switch
和#ifeq
的数值比较方法与#ifexpr
比较不同:- {{#switch: 12345678901234567|12345678901234568 = A|B}}→
B
- {{#ifexpr: 12345678901234567 = 12345678901234568|A|B}}→
A
- 具体见
ifeq
处的第一条“注意”。 - 关于原始等号符
- '情况字串'不能包含原始等号符。为了解决这个问题,创建了一个只包含一个等号符
=
的模板{{=}}。 - 应用的例子:
{{#switch: 1=2
|1=2 = raw
|1
|1
|1=2 = html
|default
}}
|1=2 = raw
|1
<nowiki>=</nowiki>
2 = nowiki|1
{{=}}
2 = template|1=2 = html
|default
}}
→ template
- 关于替换
#ifeq
#switch
可以用来减少扩展深度。- 比如:
- {{#switch:{{{1}}}|情况1=分支1|情况2=分支2|情况3=分支3|分支4}}
- 等价于:
- {{#ifeq:{{{1}}}|情况1|分支1|{{#ifeq:}}{{{1}}}|情况2|分支2|{{#ifeq:}}{{{1}}}|情况3|分支3|分支4}}
- 写成便于阅读的格式即为:
{{#ifeq:
|
|
}}
{{{1}}}
|情况1|
<!--then-->
分支1|
<!--else-->
{{#ifeq:
|
|
}}
{{{1}}}
|情况2|
<!--then-->
分支2|
<!--else-->
{{#ifeq:
|
|
}}
{{{1}}}
|情况3|
<!--then-->
分支3|
<!--else-->
分支4}}
}}
}}
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。