2

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」フラグの値を読み取る必要があります -> Google で検索しましたが、何も見つかりませんでした (キーワードが間違っている可能性があります)。値ではなく、引数がどこでもアクティブかどうかを検出するだけです。

4

1 に答える 1

2

私はあなたが定義したと思います

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

mapMaybe( importとlistToMaybefrom Data.Maybeが必要になります。)

于 2012-04-09T12:14:55.410 に答える