0
下面的代碼工作。數組類型可以直接替換序列類型嗎?
Seq.iter (printfn "%d") [|1; 2; 3; 4; 5; 6; 7; 8; 9; 10|]
這是另一個例子。 http://msdn.microsoft.com/en-us/library/ee340408.aspx
數組類型可以直接替換序列類型嗎?
下面的代碼工作。數組類型可以直接替換序列類型嗎?
Seq.iter (printfn "%d") [|1; 2; 3; 4; 5; 6; 7; 8; 9; 10|]
這是另一個例子。 http://msdn.microsoft.com/en-us/library/ee340408.aspx
數組類型可以直接替換序列類型嗎?
這是有效的,因爲該數組被隱式轉換爲seq<'T>
(這種轉換髮生的少數幾個點之一)。
但是,某些Seq
函數未針對陣列進行優化,並且執行速度比等效的函數要慢。因此,您應該使用與輸入匹配的模塊(List.x
,Lists
Array.x
,Arrays
等)。此外,返回類型將有所不同 - 如果在陣列上使用Seq.map
,則會返回Seq
而不是Array
,這可能會影響性能(例如,獲取第n個元素的速度顯着快於數組)。
+1另外,儘管使用與輸入匹配的函數的建議很有意義,但我通常默認使用Seq.xyz函數(它們提供更多的功能並且是懶惰的),並且只有在有好的時候才使用其他函數理由(即我關心表現或想要功能列表樣式處理)。 –
@TomasPetricek,當你默認使用'Seq.functionName'時,你不需要通過調用'Seq.toWhatever'來經常回到原始類型?如果序列很長,這種鑄造會變得昂貴嗎?我仍然在閱讀'RWFP',所以如果答案在本書的某個地方有解釋,請隨時告訴我。 – Shredderroy