Хорошие ответы уже даны, но я думаю, что они упускают возможность упомянуть важный момент.
Метод []
, когда он обычно используется в форме foo[params]
, фактически имеет синтаксическую сахарную форму.Базовое имя метода - []
, и вызов его в базовой форме будет foo.[](params)
.
Синтаксис Sugar воспроизводит синтаксис и преобразует вызов метода в форме foo[params]
в foo.[](params)
,Но это не работает в определении метода, поэтому вы должны определить такой метод в базовой форме, а не в синтаксической форме.