gpt4 book ai didi

F#:获取元组的长度

转载 作者:行者123 更新时间:2023-12-02 08:25:19 25 4
gpt4 key购买 nike

有没有办法得到元组的长度。我的意思是像 let a=(1,2,3) 这样的东西。我必须得到 3

我已使用以下代码将元组转换为列表并尝试获取列表的长度,但结果具有 option 类型,我无法使用它。

let tupleToList t = 
if Microsoft.FSharp.Reflection.FSharpType.IsTuple(t.GetType())
then Some (Microsoft.FSharp.Reflection.FSharpValue.GetTupleFields t |> Array.toList)
else None

最佳答案

如此处所示,tupleToList 函数返回 obj list option,因此您将不得不处理 None 情况。

非元组的长度应该是多少?

为了便于讨论,让我们将该长度设置为 0。在这种情况下,您可以使用 Option.map 获取元组(和其他值)的长度。和 Option.fold .示例:

> (1, "2") |> tupleToList |> Option.map List.length |> Option.fold (+) 0;;
val it : int = 2

> ("1", 2, 3.0) |> tupleToList |> Option.map List.length |> Option.fold (+) 0;;
val it : int = 3

> "Not a tuple" |> tupleToList |> Option.map List.length |> Option.fold (+) 0;;
val it : int = 0

如果愿意,您可以将表达式 Option.map List.length |> Option.fold (+) 0 绑定(bind)到函数。

关于F#:获取元组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32730475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com