在 F# 上定义特定类型的新数组

coo*_*kya 5 arrays f#

如何具体定义特定类型 T 的新数组?

奇怪的是,我找不到任何有关它的有用信息。

我想写这样的东西:

let arr = new Array()
Run Code Online (Sandbox Code Playgroud)

只是 arr 的元素必须是 T 类型。

我怎样才能在 F# 上做到这一点?

pad*_*pad 5

如果元素的类型未知,可以使用显式类型注释:

let arrayOfTenZeroes = Array.zeroCreate<int> 10    
let emptyIntArray: int array = [||]
Run Code Online (Sandbox Code Playgroud)

当您使用Array 模块中的高阶函数时,您不必这样做,因为元素的类型是由类型检查器自动推断的:

// arr is inferred as int array
let arr = Array.init 10 (fun i -> i+1)
Run Code Online (Sandbox Code Playgroud)


Den*_*aub 4

也许Array.init<'T>Array.create<'T>功能正是您正在寻找的。

还可以考虑使用 aSequence代替数组。

序列是全部属于一种类型的元素的逻辑系列。当您拥有大量有序数据但不一定希望使用所有元素时,序列特别有用。