F # нарезка массива по массиву индексов - PullRequest
2 голосов
/ 01 марта 2010

Как я могу перегрузить. [] Для массива F #, чтобы разрезать массив на основе произвольного индексного массива?

Например:

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

хотя

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

будет работать, было бы лучше иметь возможность использовать x.[indx] напрямую.

1 Ответ

6 голосов
/ 01 марта 2010

Вы всегда можете написать метод расширения 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)

но, поскольку у массивов уже есть индексатор, не существует способа его перегрузить / изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...