首页 > 解决方案 > 如何从命令行参数建模全局状态?

问题描述

我正在解析参数,clap但是在解析这些参数后我应该如何构建我的程序有点困惑:

我发现我需要一个来自命令行的参数——--verbose例如标志——所以我把它拉出来,现在有一个模拟这个的布尔值,然后我最终将该布尔值传递给我的所有函数. 它永远不会改变。

然后我将在命令行中引入一个新参数,我希望多个函数也可以访问这些变量。因此,现在我将 clap 转换为.get_matches()代表配置的结构,最后将该结构传递给我的所有函数。它永远不会改变。

我知道我们不想要全局可变状态。但是,是否有一个通用的习惯用法来处理仅在参数解析之后才发生变异的全局状态?此外,是否有关于如何处理verbose标志之类的东西的指导?我是否需要明确地将其传递给每个函数?


我认为上述链接的问题不能回答这个问题,因为我不确定我需要全局可变状态。评论,

默认情况下确实存在不建议,但在用于像选项程序这样的良好用例时不会,这显然是可以的。– Stargateur 15 分钟前

更多的是问题。什么定义了“OK 层”?例如,如果 main 出现在 Tokio 二进制文件中,它是“OK Tier”吗?这样做有什么安全问题?为了存储启动状态并使其全局可用,编译器是否提供了其他一些方法来改变变量?

标签: design-patternsrustargumentscommand-line-argumentsclap

解决方案


推荐阅读