1
13
我不知道用于处理的任何文档化的“模式”。 我相信处理参数的最古老的库/API之一是getopt。谷歌“getopt”显示了许多手册页和到实现的链接。 通常,我的应用程序中有参数处理器知道如何通信的首选项或设置服务。然后将参数转换成该服务中应用程序查询的内容。这可以像设置字典一样简单(比如名为“文件名”的字符串设置)。 |
2
13
我认为下面的答案更符合你想要的: 您应该考虑应用模板模式(在“设计模式”中的模板方法[gamma,el al]) 简而言之,整个过程如下:
简而言之,实现一个consoleEngineBase类,该类具有以下方法:
然后创建一个机箱,它实例化一个consoleengine()实例,并发送main()消息来启动它。 要查看如何将此应用于控制台或命令行程序的良好示例,请查看以下链接: http://msdn.microsoft.com/en-us/magazine/cc164014.aspx 这个例子在C中,但是思想很容易在任何其他环境中实现。 您可以将getopt()看作是适合于参数处理(预处理)的部分。 希望这有帮助。 |
3
5
你没有提到语言,但是我们已经爱上了Java Apache Commons CLI . 对于C/C++,GETOPT。 |
4
4
关于这个的一些评论… 首先,虽然本身没有任何模式,但是编写解析器本质上是一个机械的练习,因为给定了语法,解析器就可以很容易地生成。像野牛和鹿角这样的工具浮现在脑海中。 也就是说,对于命令行,解析器生成器通常是多余的。所以通常的模式是自己(如其他人所展示的)写几次,直到你厌倦了处理繁琐的细节,并找到一个图书馆来为你做这件事。
我为C++写了一篇文章,它节省了大量的GETOPT,并很好地使用了模板:
|
5
4
嗯,这是一个旧职位,但我仍然想贡献。这个问题是关于设计模式的选择,但是我可以看到很多关于使用哪个库的讨论。我已经按照Lindsay的说法查看了微软的链接,它讨论了要使用的模板设计模式。 但是,我不相信这个职位。模板模式的目的是定义一个模板,该模板将由不同的其他类实现,以具有统一的行为。我认为解析命令行不适合它。 我宁愿选择“命令”设计模式。此模式最适合菜单驱动的选项。 http://www.blackwasp.co.uk/Command.aspx 所以在您的例子中,-f、-d和-r都成为定义了公共或独立接收器的命令。这样,将来可以定义更多的接收器。下一步将是链接这些命令的职责,以防需要处理链。我会选择的。 http://www.blackwasp.co.uk/ChainOfResponsibility.aspx 我想这两种方法的组合最适合组织用于命令行处理或任何菜单驱动方法的代码。 |
6
2
这个 boost::program_options 如果你在C++中,并且使用Boost的话,图书馆是很好的。 |
7
2
假设您有一个“config”对象,目标是用标志和一个合适的命令行解析器来设置,该解析器负责解析命令行并提供一个恒定的选项流,下面是一个伪代码块。
|
8
2
我更喜欢“-t-text”和“-i 44”这样的选项;我不喜欢“-fname”或“-very long argument=someone-value”。 和“-?”“-h”和“h”都会生成一个帮助屏幕。 以下是我的代码的外观:
|
9
2
我正在用5公里的速度搜索安特尔的答案。这个 link to Codeproject 是一篇讨论ANLTR并使用访问模式来实现您希望应用程序采取的操作的文章。它写得很好,值得一看。 |
10
1
我建议使用命令行处理器库。 Some Russian guy 创造了一个体面的,但有很多。将为您节省一些时间,这样您就可以专注于应用程序的目的,而不是分析命令行开关! |
11
1
getopt是唯一的方法。 |
12
1
|
13
0
您没有为此提到语言,但是如果您正在寻找一个非常好的关于getopt的objective-c包装,那么Dave Dribin的ddcli框架非常好。 |
14
0
我用 Getopts::std 和 Getopts::long 在Perl和 Getopt C语言中的函数。这使参数的解析和格式标准化。其他语言有不同的处理机制。 希望这有帮助 |
15
0
标准设计通常遵循getopt的功能,有许多语言的getopt库,.net、python、c、perl、php等。 基本设计是有一个命令行解析器,它一部分一部分地返回传递给循环中检查的参数。 This 本文将对此进行更详细的讨论。 |
16
0
我对图书馆不太感兴趣,尽管这绝对有帮助。我在寻找一些“伪代码”,以说明如何处理say-your-average一堆标志和一堆更长的参数为例。 |
DarkLite1 · 在提升模式下使用多个命名参数调用脚本 6 年前 |
Micolho · execute或字符串%s传递的查询参数之间的差异 6 年前 |
Rohit Kumar · 扩展类时构造函数出错 6 年前 |
user9489003 · ruby中proc的参数 6 年前 |
O.rka · 使用参数[重复]创建bash函数时出现语法错误 6 年前 |