1

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

助けてください!

4

1 に答える 1