Могу ли я расширить встроенный индексный указатель массива? - программирование
Подтвердить что ты не робот

Могу ли я расширить встроенный индексный указатель массива?

Я хочу добавить свой собственный индекс в общий тип массива:

type 'T``[]`` with
    member this.Item(x: string) = 1  // test

Тем не менее, это дает ошибку компиляции. "Ожидается, что выражение должно иметь тип int, но здесь есть строка типа (FS0001)".

let a = [|1|]
let b = a.["aa"]      // error: FS0001
let c = a.Item("aa")  // this works.

Я нашел этот question, который был задан 3 года назад, и ответ предложил ошибку FSharp. Хотите подтвердить, если это все еще, или была ли спецификация обновлена ​​с тех пор?

4b9b3361

Ответ 1

На этот вопрос ответил Дон Симе здесь:

Необходимо уточнить спецификацию, что индексы для массивов не могут быть расширены.

Я бы сказал, что предложение разрешить их лучше всего отслеживать через http://fslang.uservoice.com. Тем не менее, это не так просто, потому что индексаторы массива "встроены" в компилятор и не имеют представления метаданных F # или IL.

Поэтому он не поддерживается в Fsharp.