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