Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么时候应该使用tuple,什么时候应该使用struct?_Struct_F#_Tuples_Containers - Fatal编程技术网

什么时候应该使用tuple,什么时候应该使用struct?

什么时候应该使用tuple,什么时候应该使用struct?,struct,f#,tuples,containers,Struct,F#,Tuples,Containers,F#元组和结构之间的根本区别是什么。它们都可以包含多个变量,但我只想知道何时使用一个变量而不是另一个变量 更具体地说,我试图通过一组函数传递一组参数,每次累积一个新变量。例如,我从param1开始,将其传递到func1,func1返回(param1,param2)。然后将该元组(或结构)传递给func2,后者返回(param1、param2、param3),依此类推 我目前的想法是:对于一个元组,我总是可以保存正确数量的参数,但我放弃了数据的统一格式,最后,我不得不打包和重新打包一个包含大约10

F#元组和结构之间的根本区别是什么。它们都可以包含多个变量,但我只想知道何时使用一个变量而不是另一个变量

更具体地说,我试图通过一组函数传递一组参数,每次累积一个新变量。例如,我从param1开始,将其传递到func1,func1返回(param1,param2)。然后将该元组(或结构)传递给func2,后者返回(param1、param2、param3),依此类推

我目前的想法是:对于一个元组,我总是可以保存正确数量的参数,但我放弃了数据的统一格式,最后,我不得不打包和重新打包一个包含大约10个元素的元组。对于结构,我有参数一致性的优点,但问题是,我必须在开始时为null指定参数。

在F#中,元组使用引用类型
Tuple
表示。另一方面,结构是值类型,因此它们是在堆栈上而不是在堆上分配的(有时可能更快)。因此,我的一般规则是:

  • 元组在F#中有很好的语法支持,所以默认情况下使用元组,因为它们使代码更漂亮。在大多数情况下,性能是相似的,您无需担心(这取决于使用情况-元组并不总是较慢)
  • 当元组变得更复杂时(例如,超过3个元素),使用具有命名成员的类型(如记录或对象类型)是有意义的
  • 当分配大量元组或结构时,最好使用结构。您可以定义自己的结构,也可以使用标准的.NET结构,如
    KeyValuePair
为了提供一个轶事证据,年,我们将结构用于内部(时间序列存储为结构数组),但不用于公共API,它使用元组。

在F#中,元组是使用引用类型的
元组来表示的。另一方面,结构是值类型,因此它们是在堆栈上而不是在堆上分配的(有时可能更快)。因此,我的一般规则是:

  • 元组在F#中有很好的语法支持,所以默认情况下使用元组,因为它们使代码更漂亮。在大多数情况下,性能是相似的,您无需担心(这取决于使用情况-元组并不总是较慢)
  • 当元组变得更复杂时(例如,超过3个元素),使用具有命名成员的类型(如记录或对象类型)是有意义的
  • 当分配大量元组或结构时,最好使用结构。您可以定义自己的结构,也可以使用标准的.NET结构,如
    KeyValuePair

为了提供一个轶事证据,年,我们将结构用于内部(时间序列存储为结构数组),但不用于公共API,它使用元组。

这应该被关闭,因为:太宽,不清楚你在问什么,主要基于观点的下意识回答是:在大多数语言中,元组只是有序的,而结构有命名成员。这通常归结为语法开销和表达能力,需要注意的是结构通常需要是正式定义的类型,而元组可能非常非正式。但是完整的答案取决于语言,“更好地使用”主要是基于观点的。对不起,我使用的是F#。我认为这可能是一个非常有效的答案-在F#中,元组是引用类型,结构是值类型,这有一些值得注意的含义!为什么网站上的人们对问题分类法如此着迷,而不是乐于助人?这一点应该总结为:太宽泛,不清楚你在问什么,主要是基于观点。下意识的回答是,在大多数语言中:元组只是有序的,而结构有命名的成员。这通常归结为语法开销和表达能力,需要注意的是结构通常需要是正式定义的类型,而元组可能非常非正式。但是完整的答案取决于语言,“更好地使用”主要是基于观点的。对不起,我使用的是F#。我认为这可能是一个非常有效的答案-在F#中,元组是引用类型,结构是值类型,这有一些值得注意的含义!为什么网络上的人们如此痴迷于问题分类法而不是乐于助人?