我已經使用了庫標準和cmdargs。標準庫拾取的命令行選項
當我在沒有cmdargs的情況下完全編譯程序並運行它時,例如./prog --help然後我得到一些關於可能的選項和運行次數等標準的不希望的迴應。
當我編譯並運行它時,命令行選項首先被我的代碼拾取,然後然後按標準閱讀。然後標準報告和錯誤告訴我,選項 - 字節是未知的。我在標準文檔中沒有看到關於如何關閉或解決此問題的任何內容。有沒有辦法清除我讀過的命令行選項?否則,我需要使用例如CPUTime而不是標準,這對我來說確實很好,因爲我確實需要大量額外的功能和標準提供的數據。
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveDataTypeable #-}
import System.Console.CmdArgs
data Strlen = Strlen {byte :: Int} deriving (Data, Typeable, Show)
strlen = cmdArgsMode $ Strlen {byte = def} &= summary "MessagePack benchmark v0.04"
main = do
n <- cmdArgsRun strlen
let datastring = take (byte n) $ randomRs ('a','z') (mkStdGen 3)
putStrLn "Starting..."
conn <- connect "192.168.35.62" 8081
defaultMain [bench "sendReceive" $ whnfIO (mywl conn datastring)]
恐怕我不明白如何將它應用到我的代碼片段中。 –
@JFritsch好的,我只是看了一下cmdargs文檔,如果我把它們正確地放在正確的位置,你就必須爲你的類型添加一個字段('Strlen')並用'args'在那裏收集它們。但是,我不確定cmdargs會使用未知選項做什麼,這是標準參數。如果你想要標準使用默認設置,'withArgs [] $ defaultMain ...'很簡單並且可以工作。如果你想傳遞固定的參數到標準,'withArgs [「-s」,「200」]例如 –
當然,如果我導入System.Environment(withArgs)。我想知道是否有更優雅的東西來保持最終的二元精益。 –