我可以做(x:int数组)
但是我只需要 300 个元素数组,那么我如何 (x : int[300]) ?
无法通过 msdn 找到此类信息)
@Marcelo Cantos 没有理由,但我总是使用大小数组。为什么不 ?
最佳答案
否 . F# 类型系统不支持诸如“大小为 300 的数组”之类的类型,即使支持,在编译时使用类型系统检查潜在的数组溢出也太不切实际了。
此外,“恰好有 300 个元素”在 F# 中几乎在所有情况下都是无用的属性,因为有大量函数和原语可以处理任意大小的数组而没有任何溢出风险( map
或 iter
,对于实例)。当您可以轻松编写适用于任意数量元素的代码时,为什么还要编写适用于 300 个元素的代码?
如果您确实需要表示“恰好有 300 个元素”属性,那么您可以做的最简单的事情就是围绕 native 数组类型创建一个包装器类型。这使您可以将那些返回数组的操作限制为仅遵守 300 元素不变量的操作(例如来自另一个 300 元素数组的 map
,或长度属性始终为 create
的 300
)。恐怕这并不像您希望的那么简单,但由于 F# 本身并不支持 300 元素数组,因此您需要自己描述所有函数不变量。
关于F#如何在类型声明中设置数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376671/