Dart中List的双点(..)用法及与单点(.)的区别
Dart中List的双点(..)级联操作符用法及与单点(.)的区别
嘿,这个问题问得很精准!在Dart里,双点..叫做级联操作符,是个能让你写代码更简洁的小工具,专门针对同一个对象的连续操作场景。
双点(..)的核心用法
它的本质是:调用对象的方法或访问属性后,返回对象本身,而不是方法/属性的返回值。
拿你提到的代码举例:
List list = []; list..add(color);
这里执行list..add(color)时,add方法本身返回的是void,但级联操作符会把原来的list对象返回回来。这意味着你可以接着链式调用更多List的方法,比如:
List<String> colors = []; colors..add('red')..add('blue')..sort();
这一行代码就完成了添加两个元素+排序的操作,不用反复写colors.,代码会清爽很多。
单点(.)和双点(..)的核心区别
我们直接用对比来搞清楚:
- 单点
.:调用方法/访问属性时,返回的是该操作的结果。比如list.add(color),add方法返回void,所以你没法在这行后面接着写.add(anotherColor)——因为void没有add方法。
用单点的话,你得这么写:List list = []; list.add(color); list.add(anotherColor); - 双点
..:调用方法/访问属性后,返回的是原对象。所以你可以链式调用多个操作,所有操作都是针对同一个对象的,就像前面的例子那样,把多行操作合并成一行链式代码。
另外补充个小细节:级联操作符不仅能调用方法,还能直接修改对象的属性,比如如果有个自定义的List子类带maxLength属性,你可以这么写:
CustomList list = CustomList(); list..maxLength = 10..add('test')..add('another');
内容的提问来源于stack exchange,提问作者Daniel Mana
相关产品推荐
相关产品推荐

