2011-04-10 58 views

回答

5

有兩個選項取決於是否您使用的實際2D陣列(矩形陣列)或鋸齒狀排列(一個數組,其元素是陣列,具有可能不同的長度):

如果你不確定使用哪一個,那麼最好知道鋸齒狀數組的速度更快,但使用矩形數組可能會更容易(因爲你確信這些尺寸)。

let foo (ar:bool[,]) = ar.[0, 0] // Get element at specified coordinates 
let bar (ar:bool[][]) = ar.[0].[0] // Get first array and then the element 

要調用兩個功能,可以使用下面的語法:

// Create array of arrays and call the function 
bar [| [| true |] |] 

// Creates array of arrays and converts it to multi-dimensional array 
// You can also use plenty of functions from 'Array2D' module 
foo (array2D [| [| true |] |]) 

如果你想寫的功能,這將是更普遍的,你也可以使用序列的序列。這將僅與鋸齒形陣列兼容,但您也可以使用例如F#列表或任何.NET集合類型的列表。

let woo (ar:seq<#seq<bool>>) = Seq.head (Seq.head ar) 

#seq<..>類型意味着它可以是序列或任何其他派生類型。這是元素類型所需要的,但不適用於外部類型,因爲F#會自動轉換外部類型(但不包括元素)。

+0

這正是我想要的。很酷謝謝你! – maybettle 2011-04-11 06:31:07