を必要とする外部関数を呼び出していますfloat[]
が、配列はfloat<m>[]
です。配列から測定単位を取り除くにはどうすればよいですか?
以下の関数のようなものが必要ですが、これはコンパイルされません。float<m>
また、float
値は同じであるため、配列の反復や複製は避けたいと思います。
let demeasure (arr:float<m>[]): float[] = float[] (arr)
を必要とする外部関数を呼び出していますfloat[]
が、配列はfloat<m>[]
です。配列から測定単位を取り除くにはどうすればよいですか?
以下の関数のようなものが必要ですが、これはコンパイルされません。float<m>
また、float
値は同じであるため、配列の反復や複製は避けたいと思います。
let demeasure (arr:float<m>[]): float[] = float[] (arr)
へのキャストとobj
それに続く動的なキャストがfloat[]
機能すると思います。
(arr :> obj) :?> float[]
ランタイム表現がないためです。
おそらくも参照してください
[<Measure>]type m
let f (arr : float[]) : float = 0.0
let arr = [|1.0<m>|]
f (unbox (box arr))
let demeasure (arr: float<m>[]) = arr |> Array.map (fun i -> float i)