在Dart中,使用elementAt
和[]
运算符访问列表元素之间有什么区别吗?
var sensors = ["ir", "ultrasound", "laser"];
void main() {
print(sensors.elementAt(1));
print(sensors[1]);
}
答案 0 :(得分:1)
.elementAt()
类随附了Iterable
方法。它适用于所有可迭代对象,不仅适用于Lists
。
某些可迭代对象可能使用更有效的方式来查找元素,而使用括号表示法的列表也是如此。
括号表示法将隐式调用.elementAt()。括号符号没有任何其他意义,仅是易于使用-正如许多人所说,它是“语法糖”。这就是效率。您可以使用较少的输入。我并不是说算法效率很高,就像在大型List
或类似的事物中更快地找到元素。
此外,由于Dart中的列表等效于许多语言中的数组。这些古老的语言使用方括号表示法来标识数组元素。因此,括号表示法也是一种传统,当您来自Java或C#...等背景时,它的目的是轻松开始使用Dart。
答案 1 :(得分:-1)
有区别,尝试运行 this 编译和不编译 dart2native
对于我的 MacBook,它将是:
mb:mobile ivan$ dart test.dart
iterable 448
list 19
list bracket 36
mb:mobile ivan$ dart2native test.dart -o zzz
mb:mobile ivan$ ./zzz
iterable 2
list 1
list bracket 0
如果我将 elementsCount
减少到 10000000
:
mb:mobile ivan$ dart test.dart
iterable 484
list 19
list bracket 9
mb:mobile ivan$ dart2native test.dart -o zzz
mb:mobile ivan$ ./zzz
iterable 2
list 1
list bracket 0
对于elementsCount = 100000000
:
mb:mobile ivan$ dart2native test.dart -o zzz
mb:mobile ivan$ ./zzz
iterable 13
list 32
list bracket 1