如何具体定义特定类型 T 的新数组?
奇怪的是,我找不到任何有关它的有用信息。
我想写这样的东西:
let arr = new Array()
Run Code Online (Sandbox Code Playgroud)
只是 arr 的元素必须是 T 类型。
我怎样才能在 F# 上做到这一点?
如果元素的类型未知,可以使用显式类型注释:
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)
也许Array.init<'T>和Array.create<'T>功能正是您正在寻找的。
还可以考虑使用 aSequence代替数组。
序列是全部属于一种类型的元素的逻辑系列。当您拥有大量有序数据但不一定希望使用所有元素时,序列特别有用。