我试图在 F# 中创建一个单维、非从零开始的数组。我需要这样的数组来与用另一种编程语言编写的代码进行互操作。Array2D.createBased 函数旨在创建二维、非从零开始的数组,但 F# 语言缺少 Array.createBased 函数来创建一维、非从零开始的数组。所以,我尝试编写自己的函数,但它不起作用。它的代码在这里:
let createBased base1 length1 (initial : 'a) =
// the problem is here: System.Array ('a [*]) is not convertible to array ('a []),
// so InvalidCastException error is raised at run-time
let A = Array.CreateInstance (typeof<'a>, [| length1 |], [| base1 |]) :?> 'a []
for i in A.GetLowerBound(0) .. A.GetUpperBound(0) do A.[i] <- initial
A
请帮忙!