Haskell語言IO模塊中函數bracket的用法及代碼示例。
用法類型:
IO a -> (a -> IO b) -> (a -> IO c) -> IO c
捕獲常見的分配,計算,解除分配習慣用語,即使在計算過程中發生錯誤,也必須在其中進行重新分配步驟。這類似於Java中的try-catch-finally。
該函數計算第一個參數,並將其值傳遞給第二個和第三個參數。接下來將評估第三個參數,即使此參數的評估導致錯誤,第二個參數也將在最後一步被評估。
示例1:
源碼:
import IO
main = bracket (openFile "/tmp/foo.txt" ReadMode) (print)
(\x -> return())
輸出:
{loc=/tmp/foo.txt,type=readable,binary=False,buffering=block (8192)}
示例2:
文件:/tmp/foo.txt
:
HELLO
源碼:
import IO
main = bracket (openFile "/tmp/foo.txt" ReadMode) (hClose)
(\hdl ->
do x <- hGetChar hdl
y <- hGetChar hdl
print (x,y)
)
輸出:
('H','E')
注:本文由純淨天空篩選整理自 haskell bracket。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。