文件明確提到使用「高清」,這爲標誌是否可以使用System.Console.CmdArgs.Implicit定義所需的標誌?
sample = Sample{hello = def &= help "World argument" &= opt "world"}
&= summary "Sample v1"
默認值(空),但我不能找到一種方法來提,我想迫使該標誌是必要的。
我應該真的去顯式或有任何方法來定義在隱式所需的標誌?
文件明確提到使用「高清」,這爲標誌是否可以使用System.Console.CmdArgs.Implicit定義所需的標誌?
sample = Sample{hello = def &= help "World argument" &= opt "world"}
&= summary "Sample v1"
默認值(空),但我不能找到一種方法來提,我想迫使該標誌是必要的。
我應該真的去顯式或有任何方法來定義在隱式所需的標誌?
爲opt
的文檔指出
注意,在CmdArgs所有標誌都是可選的,如果省略將使用它們的默認值。
因此,似乎不可能使用隱式樣式將標誌定義爲強制性的。
但是,您可以通過使用Maybe
值來檢測標誌的省略。例如。
data Sample = Sample { hello :: Maybe String }
sample = Sample{hello = def &= help "World argument" &= opt "world"}
&= summary "Sample v1"
現在,如果省略標誌,你會得到一個Nothing
如果用戶提供了一個值,你會得到Just "value"
。這意味着您可以自己檢查Nothing
並終止並顯示相應的錯誤消息。
這是故意的 - 控制檯應用程序通常不需要命名標誌,儘管您可能需要位置參數。 – 2013-05-13 21:19:36
它完全有意義。沒有立即意識到,但現在你說,這很明顯。 – 2013-05-23 23:57:41
不是真的關於主題,但我也會看[optparse-applicative](http://hackage.haskell.org/package/optparse-applicative-0.5.2.1) - 我發現它使用起來更好一些。 – isturdy 2013-05-10 14:25:35