Предположим, у меня есть тип А с реализованным индексатором, например Тип А - это библиотека. Теперь я хочу расширить его индексатор, например, здесь я хочу добавить число с плавающей точкой в индексатор.
Я разработал следующий код:
type A(a:int array) =
member this.Item
with get(x) = a.[x]
and set(x) value = a.[x] <- value
type A with
member m.Item with
get(x:float) = m.[x |> int]
and set(x:float) v = m.[x |> int] <- v
Но, похоже, не работает:
let a = A([| 1;2;3 |])
a.[1]
a.[1] <- 10
a.[1.0]
Для последней строки я получаю:
Script1.fsx(243,4): error FS0001: This expression was expected to have type
int
but here has type
float
Возможно ли расширение индексатора в F #? Спасибо!