文档清楚地提到了使用'def',它为标志提供了一个默认值(空)
sample = Sample{hello = def &= help "World argument" &= opt "world"}
&= summary "Sample v1"
Run Code Online (Sandbox Code Playgroud)
但是我找不到一种方法可以提到我要强制要求标志.
我真的应该使用Explicit还是有什么办法在Implicit中定义一个必需的标志?
对于文件opt规定,
请注意,CmdArgs中的所有标志都是可选的,如果省略则将使用其默认值.
所以似乎不可能使用隐式样式将标志定义为强制标志.
但是,您可以使用Maybe值来检测标记的省略.例如
data Sample = Sample { hello :: Maybe String }
sample = Sample{hello = def &= help "World argument" &= opt "world"}
&= summary "Sample v1"
Run Code Online (Sandbox Code Playgroud)
现在,如果省略该标志,则得到一个Nothing,如果用户提供了值,则得到Just "value".这意味着您可以自行检查Nothing并以适当的错误消息终止.