标志:自动否定
Negatable Flag with `--no-` prefix
Negatable 自动否定
常规方式
一个带有自动否定风格的标志 --warning,自动配套一个反向标志 --no-warning。
两个标志的作用是相反的。
cmdr 将会为 --warning 自动生成一个隐性的标志对象 --no-warning,从而支持对两者的正确解析。
如果终端用户输入了 --no-warning,则相应的 Store 条目 app.cmd.no-warning 会被置为 true,同时 --warning 对应的条目 app.cmd.warning 将被置为 false;反之亦然。
在内部,这两条标志被隐性地组织为一个 Toggleable Group,从而具有自动翻转的效果。
通常来说,带有自动否定风格的标志必须具有 bool 默认值。
-W 风格
这一特性自 v2.1.16 开始加入。
一个具有 -W 风格的自动否定标志,允许你指定一组条目作为其后缀。
cmdr 将会为这些后缀自动建立一对正反对应的可翻转标志,例如 --warnings.unused-variable/-Wunused-variable 和 --warnings.no-unused-variable/-Wno-unused-variable。如是类推之。
熟悉 gcc 开发的你将会对此毫无意外,这种 -W 风格几乎完全模仿 gcc -Waddress -Wno-address 标志风格。
你所需要做的只是声明一个主条目,然后在 .Negatable(true, ...) 调用中插入需要拓展的子条目项。
如上所示,终端用户可以通过 -Wunused-variable 来启用 warnings.unused-variable 标志,通过 -Wno-unused-variable 来禁用它。或者也可以使用短标志方式 -Wunused-variable 和 -Wno-unused-variable。
在最新版本的 cmdr 中,我们改善了帮助屏幕的显示效果,使其更清晰地展示了这些自动生成的标志。如下例所示:
可以看到,如果采用 -W 风格的自动否定标志,帮助屏幕会列出所有相关的子标志,方便用户查看和理解。
提示
如果在显示帮助屏幕(--help)时,同时也指定某些标志,则这些标志的 default value 将会被命令行参数所更新,从而反映在帮助屏幕中。
如上例中的 -w 标志被指定为 true,因此在帮助屏幕中显示其默认值为 true。同时也因为 negatable 标志被实现为一个 Toggleable Group,所以它的右侧描述中还会显示 [x] 也表示选中状态,反之则为 [ ] 表示非选中状态,此外尾部也会显示 (negatable) 字样,以提示用户该标志具有自动否定的特性。
定义
.Negatable(true).Default(false) 可以为标志设置 Negatable 风格。
.Negatable(true, "a","b","c").Default(false) 可以为标志设置 -W Style Negatable 风格。
运行时
上面的示例程序的运行时效果如同这样:
额外的话题
How is this guide?
Last updated on