在 Python 中,我可以通过像这样覆盖来使任何类支持索引__getitem__
:
class Test:
def __getitem__(self, key):
return self.data[key]
Dart 有类似的结构吗?
假设该__getitem__
事物允许您使用“索引”语法 ( object[index]
),是的,Dart 允许您通过定义operator []
. 例子:
class Test {
var data = {
"a": 1,
"b": 2
};
operator [](index) => data[index];
}
main() {
var t = new Test();
print(t["a"]);
print(t["b"]);
}
您还可以定义“相反” operator []=
:
class Test {
Map data = {
"a": 1,
"b": 2
};
operator [](index) => data[index];
operator []=(index, value) { data[index] = value; }
}
main() {
var t = new Test();
print(t["a"]);
print(t["b"]);
t["c"] = 3;
print(t["c"]);
}