跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
分类索引
最近更改
随机页面
灵兰秘典
帮助
帮助
联系我们
捐助本站
关于本站
MediaWiki帮助
中医百科
搜索
搜索
外观
登录
个人工具
登录
查看“︁Module:Yesno/doc”︁的源代码
模块
讨论
简体
不转换
简体
繁體
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
Cargo数据
外观
移至侧栏
隐藏
←
Module:Yesno/doc
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
本模块提供用于处理布尔值或形似布尔值的字符串输入的统一接口。Lua 允许使用 <code>true</code> 和 <code>false</code> 布尔值,而 wiki 模板仅能通过 "yes"、"no" 等字符串表达布尔值。本模块将这些字符串转换为 Lua 可处理的布尔值。对于 <code>nil</code> 输入,仍返回 <code>nil</code>,以便区分 <code>nil</code> 和 <code>false</code>。本模块同样接受 Lua 自身的结构(布尔值、数字、表、函数)作为输入。如果传入的值无法识别,可指定一个返回的默认值。 == 语法 == <syntaxhighlight lang="lua">yesno(value, default)</syntaxhighlight> <code>value</code> 是需要测试的值。布尔值输入或形似布尔值的输入(见下)总是视为 <code>true</code> 或 <code>false</code>,<code>nil</code> 总是视为 <code>nil</code>,其他值一律返回 <code>default</code>。 == 用法 == 首先加载模块。注意只能由其他 Lua 模块加载,普通 wiki 页面请使用 {{tl|yesno}} 模板。 <syntaxhighlight lang="lua"> local yesno = require('Module:Yesno') </syntaxhighlight> 以下值始终返回 <code>true</code>: <syntaxhighlight lang="lua"> yesno('yes') yesno('y') yesno('true') yesno('t') yesno('on') yesno('1') yesno(1) yesno(true) yesno('是') yesno('开') yesno('開') </syntaxhighlight> 以下值始终返回 <code>false</code>: <syntaxhighlight lang="lua"> yesno('no') yesno('n') yesno('false') yesno('f') yesno('off') yesno('0') yesno(0) yesno(false) yesno('否') yesno('关') yesno('關') </syntaxhighlight> <code>nil</code> 值始终返回 <code>nil</code>: <syntaxhighlight lang="lua"> yesno(nil) </syntaxhighlight> 字符串在匹配前会转换为小写: <syntaxhighlight lang="lua"> -- 始终返回 true: yesno('Yes') yesno('YES') yesno('yEs') yesno('Y') yesno('tRuE') yesno('ON') -- 始终返回 false: yesno('No') yesno('NO') yesno('nO') yesno('N') yesno('fALsE') yesno('OFF') </syntaxhighlight> === 未定义值 === 如果 yesno 收到上面未列出的值,可指定默认值。不提供默认值时返回 <code>nil</code>。 <syntaxhighlight lang="lua"> -- 以下返回 nil: yesno('foo') yesno({}) yesno(5) yesno(function() return '这是函数' end) -- 以下返回 true: yesno('foo', true) yesno({}, true) yesno(5, true) yesno(function() return '这是函数' end, true) -- 以下返回 "bar": yesno('foo', 'bar') yesno({}, 'bar') yesno(5, 'bar') yesno(function() return '这是函数' end, 'bar') </syntaxhighlight> 空白字符串同样按未定义处理: <syntaxhighlight lang="lua"> yesno('') -- 返回 nil yesno('', true) -- 返回 true yesno('', 'bar') -- 返回 "bar" </syntaxhighlight> 尽管空字符串在 wikitext 中通常等价于 false,但 Lua 视其为非空。本模块遵循 Lua 行为。如果需要将空字符串视为 false,请在传入前过滤,例如 [[Module:Arguments]] 默认会移除空白参数。 === 处理 nil === 根据定义: <syntaxhighlight lang="lua"> yesno(nil) -- 返回 nil yesno('foo') -- 返回 nil yesno(nil, true) -- 返回 nil(nil 不走默认值) yesno(nil, false) -- 返回 nil yesno('foo', true) -- 返回 true </syntaxhighlight> 要获得纯粹的 <code>true</code>/<code>false</code> 二元值,推荐以下模式: <syntaxhighlight lang="lua"> -- 清晰写法:显式处理 nil local result = yesno(value) if result == nil then result = true -- nil 时的回退值 end -- 简洁写法:默认 false result = yesno(value or false, false) -- 简洁写法:默认 true result = yesno(value or true, true) </syntaxhighlight><includeonly>{{sandbox other|| [[Category:元模块]] }}</includeonly>
该页面使用的模板:
Template:Tl
(
查看源代码
)
Template:Transclude
(
查看源代码
)
返回
Module:Yesno/doc
。