30

是否可以重载[]集合/可迭代类型的索引语法?例如,我正在编写一个SortedList<T>围绕标准的类List<T>。我只想将排序列表中的用法直接传递给底层列表对象。我以为我在 dart 语言之旅中读到了这个,但现在找不到了。

4

2 回答 2

51

Dart 编辑器似乎很满意:

operator [](int i) => list[i]; // get
operator []=(int i, int value) => _list[i] = value; // set

DartPad中尝试

于 2013-10-28T19:50:28.613 回答
3

是的,您可以覆盖运算符。像这样:

T operator [](int index) => items[index];

但是你不能在飞镖中超载任何东西。因为 Dart 不支持运算符或函数重载。这意味着您的类不能有两个名称相同但参数不同的函数。

于 2020-06-17T01:52:19.957 回答