有没有办法在 F# List 和 F# Tuple 之间进行转换?
例如:
[1;2;3] -> (1,2,3)
(1,2,3,4) -> [1;2;3;4]
我需要两个函数来做到这一点:
let listToTuple list = ...
let tupleToList tuple = ...
先感谢您。
除了 listToTuple 之外,pblasucci 还有正确的答案。
但是,除非您了解所涉及的类型类型,或者不想进行大量装箱和拆箱,否则您不会对结果感到满意。
let tupleToList t =
if Microsoft.FSharp.Reflection.FSharpType.IsTuple(t.GetType())
then Some (Microsoft.FSharp.Reflection.FSharpValue.GetTupleFields t |> Array.toList)
else None
let listToTuple l =
let l' = List.toArray l
let types = l' |> Array.map (fun o -> o.GetType())
let tupleType = Microsoft.FSharp.Reflection.FSharpType.MakeTupleType types
Microsoft.FSharp.Reflection.FSharpValue.MakeTuple (l' , tupleType)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)