F#如何在类型声明中设置数组长度

4

我可以使用 (x : int array)。

但我只需要一个长度为 300 的数组,那么如何使用 (x : int[300]) ?

在 MSDN 上找不到相关信息。

@Marcelo Cantos 没有理由,但我总是使用定长数组。为什么不呢?


你必须出于某种原因对其进行限制吗? - Marcelo Cantos
1个回答

3
不可以。F#类型系统不支持"大小为300的数组"等类型,即使它支持,使用类型系统在编译时检查潜在的数组溢出也太不切实际了。
此外,在几乎所有情况下,“恰好有300个元素”都是一个无用的属性,因为有大量的函数和原语可以处理任意大小的数组而不会产生任何溢出风险(例如map或iter)。为什么要编写适用于300个元素的代码,当你可以轻松编写适用于任意数量元素的代码呢?
如果您确实需要表示“恰好有300个元素”的属性,则最简单的方法是创建一个封装类型来包装本机数组类型。这样可以将返回数组的操作限制为仅限于遵守300元素不变性的操作(例如从另一个300元素数组的map或create,其中长度属性始终为300)。恐怕这并不像您希望的那样简单,但由于F#不支持300元素数组,因此您需要自己描述所有函数不变性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接