Нет, перегрузить оператор индекса невозможно, [
и ]
зарезервированы языком для указания информации о типе (например, List [String]) и поэтому недоступны для этого использования. Вы можете использовать функцию apply
. Ближайший эквивалент к тому, что у вас есть в вашем примере c ++:
class Foo {
val data = Array.ofDim[Int](7)
//...
def apply(i : Int) : Int = data(i)
//...
}
//Usage :
//var f = new Foo
//val aNumber = f(0)
//aNumber == f.data(0)
Функция apply
в scala - это просто некоторый синтаксический сахар, если вы его определили, тогда f(0)
будет расширен до f.apply(0)
за кулисами. Если вы хотите использовать операторы типа f(0) = 4
, вы также можете сделать это с помощью связанной функции update
.