較短的方式,我有一個返回一個元組的函數:寫匹配
let rec pack l =
let combine = List.fold packFunction (' ',[], []) l
match combine with
| (_,b,a) -> b::a |> List.rev |> List.tail
有沒有辦法來提取元組的部分,而無需使用匹配的語句?
即ID喜歡(一_,B),而不使用匹配語句
較短的方式,我有一個返回一個元組的函數:寫匹配
let rec pack l =
let combine = List.fold packFunction (' ',[], []) l
match combine with
| (_,b,a) -> b::a |> List.rev |> List.tail
有沒有辦法來提取元組的部分,而無需使用匹配的語句?
即ID喜歡(一_,B),而不使用匹配語句
像這樣的東西來獲得B和A出來的?
let rec pack l =
let _,b,a = List.fold packFunction (' ',[], []) l
b::a |> List.rev |> List.tail
你總是可以直接從元組中提取:
let a,b = (1,1)
或
let a,b = functionWhichReturnsTuple
那麼明顯!這很完美,謝謝 – Marcom 2011-04-20 21:01:28
模式匹配可不僅僅是match
ES等很多地方都可以使用。在這種情況下,它不會出現,你需要combine
在所有(也沒有出現的pack
需要遞歸)...
let pack l =
let _, b, a = List.fold packFunction (' ', [], []) l
b::a |> List.rev |> List.tail
另一種方式把它(圖案匹配通過拉姆達參數) :
let rec pack l =
List.fold packFunction (' ',[], []) l
|> fun (_,b,a) -> b::a |> List.rev |> List.tail
聽起來像是你可能會發現這個啓發:http://fsharpnews.blogspot.com/2011/01/patterns-are-everywhere.html – 2011-04-21 08:58:29