Я хотел бы использовать отрицательные индексы для массивов, чтобы я мог написать myThings.[-2] <- "sth"
, чтобы установить второй последний элемент.Возможно ли это?
Я пробовал это, но не компилируется с:
Method overrides and interface implementations are not permitted here
type ``[]``<'T> with
/// Allows for negative index too (like python)
override this.Item
with get i = if i<0 then this.[this.Length+i] else this.[i]
and set i v = if i<0 then this.[this.Length+i] <- v else this.[i] <- v
Я знаю, я мог бы использовать новых членов, таких как myThings.SetItemNegative(-2,"sth")
но это не так хорошо, как использование индексной нотации:
type ``[]``<'T> with
/// Allows for negative index too (like python)
member this.GetItemNegative (i) =
if i<0 then this.[this.Length+i] else this.[i]
member this.SetItemNegative (i,v) =
if i<0 then this.[this.Length+i] <- v else this.[i] <- v