F#元组和结构之间有什么根本区别。它们都可以容纳多个变量,但我只想知道何时使用另一个变量。
更具体地说,我试图通过一堆函数传递一堆参数,每次都会累积一个新变量。例如,我从param1开始并将其传递给返回的func1(param1,param2)。然后这个元组(或结构)被传递给func2,它返回(param1,param2,param3),依此类推。
我目前的想法是这样的:有一个元组,我总是可以持有适量的参数,但我放弃了统一的数据格式,最后,我必须打包并重新打包一个元组大约10个元素。使用结构,我的优点是参数的一致性,但问题是,我必须在开头指定参数。
答案 0 :(得分:5)
在F#中,使用Tuple<T1, T2>
表示元组,这是一种引用类型。另一方面,结构是值类型,因此它们在堆栈上而不是在堆上分配(有时可能更快)。所以我的一般规则是:
KeyValuePair<K, V>
等标准.NET结构。为了给出一个轶事证据,在Deedle中我们使用内部结构(时间序列存储为结构数组),但不是使用元组的公共API。