F#按索引数组切片数组

时间:2010-03-01 15:49:29

标签: f#

如何重载。[] F#数组根据任意索引数组切片数组?

例如:

let x = [|1..10|]; 
let indx = [|4;1|];

虽然

[| for i in indx ->x.[i]|] 

会起作用,直接使用x.[indx]会更好。

1 个答案:

答案 0 :(得分:6)

您始终可以编写F#扩展方法来接近语法

let a = [| 1..10 |]
let idx = [|4;1|]

type 'T ``[]`` with   //'
    member this.Slice(indices:int array) =
        [| for i in indices -> this.[i] |]

printfn "%A" (a.Slice idx)

但由于数组已经有一个索引器,因此没有出现过载/更改它的方法。