2010-03-01 5 views
2

[F] 배열에 대해 임의의 인덱스 배열을 기반으로 배열을 슬라이스하려면 어떻게 오버로드 할 수 있습니까? 예를 들어F # 배열을 인덱스 배열로 자름

: 일하는 것이

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

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

있지만, 직접 x.[indx]를 사용 할 수 있도록 친절하게 대할 것입니다.

+2

예제에서는 * 슬라이싱 *을 수행하지 않습니다. 배열의 다른 요소 만 검색합니다. 슬라이싱은 f.ex입니다. x 여야한다. [2..6]' – Frank

답변

5

당신은 항상 구문

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) 

에 가까이 할 수있는 F # 확장 방법을 쓸 수 있지만, 배열은 이미 나타나지 않는 인덱서이 있기 때문에 변경/과부하 할 수있는 방법이있다.

관련 문제