You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:46:22