2013-10-04 3 views
0

У меня есть obj[,], компоненты которого все float s. Я хочу преобразовать его в float[,]. Я пробовал много перестановок box, unbox, Array2D.map float, Array2D.copy, System.Convert.ChangeType и т. Д., И никто не работает. Как действовать?F # casting obj [,] to float [,]

+1

Покажите нам код, вы пробовали и описать, как именно он не работает. Существуют ли ошибки компилятора, исключения времени выполнения, неожиданный вывод или что-то еще? –

ответ

3

Это, кажется, работает очень хорошо для меня:

let boxedArray = Array2D.init 2 2 (fun x y -> box (float (x + y))) 
let unboxedArray = boxedArray |> Array2D.map unbox<float> 

printfn "%A" (boxedArray.GetType()) // System.Object[,] 
printfn "%A" (unboxedArray.GetType()) // System.Double[,] 
+0

Получил это. Я пытался сделать 'boxedArray |> unbox |> Array2D.map float' и получил время выполнения' System.InvalidCastException' – kevinykuo