我正在使用getOpts查看this example,其中一部分確實令我困惑:字段標籤的語法。Haskell字段標籤如何工作?
首先,這看起來很簡單,創建一個數據類型和聲明的初始值:
data Options = Options { optVerbose :: Bool
, optInput :: IO String
, optOutput :: String -> IO()
}
startOptions :: Options
startOptions = Options { optVerbose = False
, optInput = getContents
, optOutput = putStr
}
然後getOpt
用於使用foldl
命令要經過選擇和確定實際參數爲正在運行的程序...然後這讓表情讓我很沮喪:
let Options { optVerbose = verbose
, optInput = input
, optOutput = output } = opts
布爾和功能verbose
,input
和output
這之後接着使用。在大多數編程語言,我比較熟悉,這一步就寫東西,像這樣:
verbose = opts.optVerbose
input = opts.optInput
output = opts.optOutput
這裏是Haskell的行爲記錄在某處?
這裏有一點補充文件:http://en.wikibooks.org/wiki/Haskell/ Pattern_matching#Introduction_to_records – sclv 2010-09-21 00:41:02
謝謝你所有的好答案! – 2010-09-21 19:00:36
有趣的是:與Brendan Eich討論JavaScript未來的這段視頻展示了一個關於「解構」的幻燈片,其中看起來像是在11:17左右類似的東西。 :) http://hacks.mozilla.org/2010/07/brendan-eich-at-jsconf-2010-whats-coming-in-ecmascript-5-and-more/ – 2010-09-22 07:58:23