社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544
帮助:解析函数/switch
Switch是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
多分支语句,类似于编程语言中的switch。
其第一个参数是要进行条件判断的表达式或值。后续的参数是一系列的条件和对应的结果。
出自扩展ParserFunctions。
- 格式
{{#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: 比较字串 | 情况字串1 = 返回结果1 | 情况字串2 = 返回结果2 | ... | 情况字串n = 返回结果n | #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
的数值比较方法与表达式比较不同:{{#switch: 12345678901234567 | 12345678901234568 = A | B}}
→B
{{#ifexpr: 12345678901234567 = 12345678901234568 | A | B}}
→A
- 具体见
ifeq
处的第一条“注意”。 - 关于原始等号符
- '情况字串'不能包含原始等号符。为了解决这个问题,创建了一个只包含一个等号符
=
的模板{{=}}
。 - 应用的例子:
{{#switch: 1=2 | 1=2 = raw | 1=2 = nowiki | 1=2 = html | 1{{=}}2 = template | default }}
→ html
- 关于替换
#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}}}}}}
- 实际用例
- BWIKI中实际应用它的页面。这个静态列表可能在下列页面更改后过时