4

を必要とする外部関数を呼び出していますfloat[]が、配列はfloat<m>[]です。配列から測定単位を取り除くにはどうすればよいですか?

以下の関数のようなものが必要ですが、これはコンパイルされません。float<m>また、float値は同じであるため、配列の反復や複製は避けたいと思います。

let demeasure (arr:float<m>[]): float[] = float[] (arr)
4

4 に答える 4

3

へのキャストとobjそれに続く動的なキャストがfloat[]機能すると思います。

(arr :> obj) :?> float[]

ランタイム表現がないためです。

おそらくも参照してください

F#測定単位-'値を持ち上げてfloat<何か>

F#の測定単位を一般的に削除する方法

于 2012-07-09T22:26:28.600 に答える
1
[<Measure>]type m
let f (arr : float[]) : float = 0.0
let arr = [|1.0<m>|]
f (unbox (box arr))
于 2012-07-09T22:28:58.970 に答える
1
let demeasure (arr: float<m>[])  = arr |> Array.map (fun i -> float i)
于 2013-01-24T15:57:38.497 に答える