2013-08-21 74 views
6

正在關注this question我想知道如何(或者如果)我可以擴展通用F#數組類型。 我可以這樣做:F#如何擴展泛型數組類型?

type System.Array with 
    member a.Last = a.GetValue(a.Length - 1) 

但托馬斯提到它是不通用的。接下來,我試過,但它不工作:

type Microsoft.FSharp.Collections.Array with // Error: Array is not defined  
    member a.Last = a.[a.Length - 1] 

在F#scource我發現這個命名空間,但它不工作之一:

type Microsoft.FSharp.Primitives.Basics.Array with // Error: Array is not defined   
    member a.Last = a.[a.Length - 1] 

回答

16

這是一個有點混亂 - 不過我最近尋找在F#規範的東西,碰到這個傳來:

type 'T ``[]`` with 
    member a.Last = a.[a.Length - 1] 

[| 1 .. 10 |].Last 

的雙反引號編碼通常用於把保留的關鍵字爲有效的F#標識符(例如,如果你想有一個PROPERT y在名稱中有一個空格,或者名稱爲let)。在這裏,這可能意味着編譯器需要將[]視爲普通類型的「名稱」,而不是作爲數組的特殊語法。