F#扩展锯齿状数组类型

时间:2014-01-22 07:21:07

标签: f# type-extension

我已经阅读了问题F# how to extended the generic array type?并且它的回答是,它非常接近我不想做的事情。是否可以扩展类型'T[][],就像使用'T[]

一样

1 个答案:

答案 0 :(得分:3)

锯齿状数组[][]是一个专门用于另一个数组的数组[]

您可以使用[,]这是一个2D数组:

type 'T ``[,]`` with
    member a.First = a.GetValue(0,0)

(array2D [| [| 1 .. 10 |] ; [| 11 .. 20 |] |] ).First

但是如果你真的想使用[][]你不能用这个F#特定符号来做,那么就不可能将它声明为专用,因为这种符号反映了类型定义,所以你必须这样做.NET方式:

[<System.Runtime.CompilerServices.Extension>]
module Extensions =

    [<System.Runtime.CompilerServices.Extension>]   
    let First   (x  :_ [][]) = x.[0].[0]

从C#访问它时会起作用,但是从F#开始我觉得你需要F#3.1