gpt4 book ai didi

algorithm - 合并冲突选项的实用方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:39:48 24 4
gpt4 key购买 nike

我有一个脚本接受多个选项作为参数。有效选项列表可能很大 (>20),这可能会导致冲突。有没有一种实用的方法可以将冲突的组合在一起,将不冲突的组合到另一个而不创建多个列表、组等。对一个组的更改将导致对其他组的更改。

例如可用选项列表:-a, -b, -c, -d

以下选项冲突:[-a, -c], [-a, -d]

以下选项不冲突:[-a, -b], [-c, -d]

编辑,一个更精确的例子:

例如,该脚本允许启动/停止特定任务,并具有用于创建/删除日志的附加选项。

一个正常的开始是这样的:./script -start Task -logFile C:\out.tmp

并且脚本应该在以下情况下通知用户:./script -start Task -stop Task 被执行,因为 startstop 是两个相反的 Action 。

另一个冲突的 Action :./sript -start Task -logFile C:\out.tmp -deleteLog C:\out.tmp ,这将创建一个日志文件并同时删除它

现在,如果选项是start、stop、logFile、deleteLog

以下会产生冲突:[start, stop], [logFile, deleteLog]

以下不会冲突:[start, logFile], [stop, deleteLog]

最佳答案

让我们假设,在您编写源代码时,您可以决定如何为解析时间组织参数。例如(使用 JSON 表示法,您可以轻松地将其适应 C 结构、Java 枚举或您拥有的东西),您可以注释可用选项以明确指示它们哪些冲突:

const options = [
{
name: "start",
description: "starts foobaring the fizzbuzz",
parameters: [
{
name: "task",
type: "string",
optional: false,
description: "the type of task to foobar"
}
]
conflicts: ["stop"] // <-- explicit simple conflict detection
},
{ ... }
]

这将被命令行解析模块用于

  • 生成一个漂亮的帮助屏幕,可能包括相互冲突的选项
  • 返回命令行选项的映射,比如parsedArgs ,所以 parsedArgs['start']将对应于 start 的参数参数(如果已指定)。
  • 检测简单冲突,如果在解析时检测到冲突选项,则通过提示来检测。

请注意,可能存在不值得在解析阶段检测的额外冲突。例如,如果选项的值 foo必须大于 bar + baz ,最好在解析后编写检查这一事实的代码,而不是让解析器复杂化以处理选项值之间的任意关系。

关于algorithm - 合并冲突选项的实用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52747933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com