f# 4.5預覽版現已發布,其中提供了一系列新特性,包括對.net core 2.1的新原生型別span\u0026lt;t\u0026gt;
的支援、新關鍵字match!
等。
\\ 型別span
意在實現底層**指標操作的安全性和可**性,這可使得很多情況下不必再分配記憶體,進而改進了記憶體使用的效率和效能。為實現此,span
會為已在記憶體某處儲存的資料提供一種虛擬檢視。例如,對於乙個具有10000個元素的陣列,我們完全可以建立乙個包括其前1000個元素的切片,並將該切片傳遞給函式,不需要對這些元素做拷貝。**如下:
\\
\let nativememory = marshal.allochglobal(100);\ let nativespan = new span\u0026lt;byte\u0026gt;(nativememory.topointer(), 100)\ let nativespanslice = new span\u0026lt;byte\u0026gt;(nativememory.topointer(), 10)\ let mem = nativeptr.stackalloc\u0026lt;byte\u0026gt;(100)\ let mem2 = mem |\u0026gt; nativeptr.tovoidptr\ let stackspan = span\u0026lt;byte\u0026gt;(mem2, 100)\
\\
型別span
實際上包括了一系列的子特性,例如voidptr
型別、nativeptr.ofvoidptr
和nativeptr.tovoidptr
函式,以及其它一些支援f# 4.5的span
與c# 7.3對等的特性。特性對應表如下所示:
\\
\c# f#\out int arg arg: byref\u0026lt;int\u0026gt;\out int arg arg: outref\u0026lt;int\u0026gt;\in int arg arg: inref\u0026lt;int\u0026gt;\ref readonly int inferred or arg: inref\u0026lt;int\u0026gt;\ref expr \u0026amp;expr\
\\
為確保**的公平性,f#對使用span
強加了一系列應用於所有類byref
結構的限制:\\
關鍵字match!
是開發人員期待已久的乙個特性,它用於在計算表示式中簡化匹配語法。f# 4.1中,在做匹配前,需要使用let!
作為乙個中間步驟:
\\
\let funcwithstring (s: string) =\ async \
\\
而在f# 4.5中,只需如下編寫:
\\
\let funcwithstring (s: string) =\ async \
\\
f# 4.5還提供了下列特性:
\\
\let x2 : obj list = [ yield \"a\" :\u0026gt; obj ] // f# 4.5版本之前。\let x3 : obj list = [ yield \"a\" ] // f# 4.5版本。\
\\
據carter介紹,目前發布的f# 4.5非常穩定,它將會加入到即將發布的visual studio 2017 update 15.8中。此外,該預覽版可以從.net core平台和windows處手工獲取。
\\檢視英文原文:f# 4.5 brings spans, match!, and more
F 4 5提供Spans Match 等特性
f 4.5預覽版現已發布,其中提供了一系列新特性,包括對.net core 2.1的新原生型別span u0026lt t u0026gt 的支援 新關鍵字match 等。型別span意在實現底層 指標操作的安全性和可 性,這可使得很多情況下不必再分配記憶體,進而改進了記憶體使用的效率和效能。為實現...
F 4 5提供Spans Match 等特性
f 4.5預覽版現已發布,其中提供了一系列新特性,包括對.net core 2.1的新原生型別span u0026lt t u0026gt 的支援 新關鍵字match 等。型別span意在實現底層 指標操作的安全性和可 性,這可使得很多情況下不必再分配記憶體,進而改進了記憶體使用的效率和效能。為實現...
F 4 5提供Spans Match 等特性
f 4.5預覽版現已發布,其中提供了一系列新特性,包括對.net core 2.1的新原生型別span u0026lt t u0026gt 的支援 新關鍵字match 等。型別span意在實現底層 指標操作的安全性和可 性,這可使得很多情況下不必再分配記憶體,進而改進了記憶體使用的效率和效能。為實現...