list.elementAt(n)和list [n]之间有什么区别吗

时间:2019-03-20 21:43:36

标签: dart

在Dart中,使用elementAt[]运算符访问列表元素之间有什么区别吗?

var sensors = ["ir", "ultrasound", "laser"];

void main() {
    print(sensors.elementAt(1));
    print(sensors[1]);
}

2 个答案:

答案 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