3

在 Python 中,我可以通过像这样覆盖来使任何类支持索引__getitem__

class Test:
   def __getitem__(self, key):
      return self.data[key]

Dart 有类似的结构吗?

4

1 回答 1

14

假设该__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"]);
}
于 2013-06-02T10:54:20.647 回答