F# で 1 次元の非ゼロ ベースの配列を作成しようとしました。別のプログラミング言語で記述されたコードとの相互運用性のために、このような配列が必要です。Array2D.createBased 関数は、2 次元のゼロベースでない配列を作成することを目的としていますが、F# 言語には、1 次元のゼロベースでない配列を作成するための 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
助けてください!