社区文档构建中,欢迎进行编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544

全站通知:

帮助:解析函数/switch

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

Switch是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。

缺少内容。本Wiki由与你一样的用户共同编写,请帮助我们完善内容:开始编辑
  • 参考官方文档和其他文档完善内容
  • 增加实际用例和技巧

多分支语句,类似于编程语言中的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中实际应用它的页面。这个静态列表可能在下列页面更改后过时