我有一个返回元组的函数:
let rec pack l =
let combine = List.fold packFunction (' ',[], []) l
match combine with
| (_,b,a) -> b::a |> List.rev |> List.tail
有没有办法在不使用匹配语句的情况下提取元组的部分?
即,id喜欢在不使用匹配语句的情况下获取b和a(_,b,a)
答案 0 :(得分:6)
这样的东西?
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
答案 1 :(得分:2)
模式匹配可以在除match
之外的许多地方使用。在这种情况下,您似乎根本不需要combine
(似乎pack
也不需要递归)...
let pack l =
let _, b, a = List.fold packFunction (' ', [], []) l
b::a |> List.rev |> List.tail
答案 2 :(得分:1)
另一种方式(通过lambda参数进行模式匹配):
let rec pack l =
List.fold packFunction (' ',[], []) l
|> fun (_,b,a) -> b::a |> List.rev |> List.tail