文档清楚地提到了使用'def',它为标志
提供了一个默认值(空)sample = Sample{hello = def &= help "World argument" &= opt "world"}
&= summary "Sample v1"
但是我找不到提及我想要强制标志的方法。
我真的应该使用Explicit还是有办法在Implicit中定义一个必需的标志?
答案 0 :(得分:8)
opt
的文档说明了
请注意,CmdArgs中的所有标志都是可选的,如果省略则使用它们的默认值。
因此似乎无法使用隐式样式将标志定义为必需。
但是,您可以使用Maybe
值检测遗漏标记。 E.g。
data Sample = Sample { hello :: Maybe String }
sample = Sample{hello = def &= help "World argument" &= opt "world"}
&= summary "Sample v1"
现在,如果省略该标志,则会得到Nothing
,如果用户提供了值,则会得到Just "value"
。这意味着您可以自己检查Nothing
并以适当的错误消息终止。