f # переписать оператор доступа к массиву. [] - PullRequest
6 голосов
/ 28 мая 2011

в F # я хочу создать тип индексированного массива, чтобы я мог получить доступ к элементу либо с помощью .[i], либо с помощью .[index_names] и с помощью записи среза с индексом .. Можно ли перезаписать .[] следующим образом?спасибо.

1 Ответ

11 голосов
/ 28 мая 2011

определить перегруженный индексатор в вашем типе:

type MyIndexedArray<'T>() = 
    member this.Item(i : int) : 'T = Unchecked.defaultof<_>
    member this.Item(name : string) : 'T = Unchecked.defaultof<_>
    member this.GetSlice(a : int option, b : int option) : 'T = Unchecked.defaultof<_>

let arr = new MyIndexedArray<int>()
let a = arr.[1]
let b = arr.["name"]
let c = arr.[1..2]
let d = arr.[1..]
let e = arr.[..3]
let f = arr.[*]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...