特定類型的新陣列如何可以具體地定義特定類型T的新的數組?限定於F#
奇怪的是,我無法找到任何關於它的有用的信息..
我想寫的東西是這樣的:
let arr = new Array()
只是改編的元素必須是T類型
的如何在F#上執行此操作?
特定類型的新陣列如何可以具體地定義特定類型T的新的數組?限定於F#
奇怪的是,我無法找到任何關於它的有用的信息..
我想寫的東西是這樣的:
let arr = new Array()
只是改編的元素必須是T類型
的如何在F#上執行此操作?
也許Array.init<'T>
和Array.create<'T>
功能是你在找什麼。
還要考慮使用一個Sequence
代替陣列。
序列是一個邏輯一系列元素的所有一種類型的的。如果您有大量有序的數據集合,但不一定期望使用所有元素,則序列特別有用。
或許你可以嘗試這樣的事情。
let myStringArray : string array = Array.zeroCreate 10
let myIntArray : int array = Array.zeroCreate 10
let myCharArray : char array = Array.zeroCreate 10
它被描述在msdn上。
如果元素的類型是未知的,你可以使用顯式類型註解:
let arrayOfTenZeroes = Array.zeroCreate<int> 10
let emptyIntArray: int array = [||]
當您使用高階函數從Array module,你沒有這樣做,因爲元素的類型由類型檢查器自動推斷:
// arr is inferred as int array
let arr = Array.init 10 (fun i -> i+1)
Automatic generalization和類型推斷是你應該利用的很棒的功能。
當創建一個數組:
let arr = Array.zeroCreate 10
其類型是廣義。在這種情況下,推斷爲'T[]
(儘可能一般)。
一旦你做這樣的事情:
let x = arr.[0] + 1
或
printfn "%s" arr.[0]
它可以推斷出具體類型(int[]
或string[]
,分別)。
缺乏明確的類型,使你的代碼乾淨多了。將類型註釋保存爲真正需要的時間。
你說你找不到關於它的信息;下一次,從MSDN文檔開始:http://msdn.microsoft.com/en-us/library/dd233181語言參考有一個名爲'數組'的子主題,這將有助於:) – Brian