F 4 5提供Spans Match 等特性

2021-09-17 07:05:39 字數 2013 閱讀 2475

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.ofvoidptrnativeptr.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意在實現底層 指標操作的安全性和可 性,這可使得很多情況下不必再分配記憶體,進而改進了記憶體使用的效率和效能。為實現...