F# 写匹配的较短方法
我有一个返回元组的函数:F# 写匹配的较短方法,f#,F#,我有一个返回元组的函数: let rec pack l = let combine = List.fold packFunction (' ',[], []) l match combine with | (_,b,a) -> b::a |> List.rev |> List.tail 有没有一种方法可以在不使用匹配语句的情况下提取元组的某些部分 也就是说,我想在不使用
let rec pack l =
let combine = List.fold packFunction (' ',[], []) l
match combine with
| (_,b,a) -> b::a |> List.rev |> List.tail
有没有一种方法可以在不使用匹配语句的情况下提取元组的某些部分
也就是说,我想在不使用匹配语句的情况下从(u,b,a)中得到b和a
let rec pack l =
let _,b,a = List.fold packFunction (' ',[], []) l
b::a |> List.rev |> List.tail
始终可以直接从元组中提取:
let a,b = (1,1)
或
模式匹配可以在许多地方使用,而不仅仅是
match
es。在这种情况下,您似乎根本不需要组合
(pack
也不需要递归)
还有另一种说法(通过lambda参数进行模式匹配):
听起来你可能会觉得这很有启发性:
let a,b = functionWhichReturnsTuple
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