【问题标题】:Haskell reading args valueHaskell 读取 args 值
【发布时间】:2012-04-09 12:00:44
【问题描述】:

我在读取 haskell 中的参数值时遇到了一点问题:

我有这样声明的选项:

options :: [OptDescr ArgFlag]
options = [Option [] ["help"] (NoArg Help) "",
           Option [] ["version"] (NoArg Version) "",
           Option ['a'] [] (NoArg FSAll) "",
           Option ['L'] [] (ReqArg FSLevel "NUM") ""]

我读到这样的参数(我可以读到哪个参数是活动的):

main = do
         args <- getArgs
         case getOpt RequireOrder options args of
             ([Version], [], []) -> do ...

             ([Help], [], []) -> do ...

             (flags, files, []) -> do ........ *

             otherwise -> do ...

如果有 '*' 字符,我需要读取可能的 '-l 3' 标志的值 -> 我通过谷歌搜索但我什么也没找到(虽然可能是错误的关键字)。他们只是检测参数是否无处不在,而不是它的值。

【问题讨论】:

    标签: haskell functional-programming args


    【解决方案1】:

    我想你已经定义了

    data ArgFlag = Help
                 | Version
                 | FSAll
                 | FSLevel String
    

    带有辅助函数

    unFSLevel :: ArgFlag -> Maybe String
    unFSLevel (FSLevel value) = Just value
    unFSLevel _               = Nothing
    

    然后你可以得到这样的值:

    case listToMaybe $ mapMaybe unFSLevel of
         Just value -> -- code to handle the -L flag having this value
         Nothing    -> -- code to handle there not being an -L flag
    

    (您需要从Data.Maybe 导入mapMaybelistToMaybe。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多