如何在Dart中仅使用级联或链接调用来干净地映射/排序/折叠/排序/展开?

Set*_*add 3 dart

我想对源列表执行以下操作:

  • 地图
  • 到清单
  • 分类
  • 分类
  • 扩大
  • 到清单

其中一些方法(例如map和toList)是可链接的,因为它们返回一个非null对象。但是,该sort方法void在对List进行操作时返回,并且不返回列表。

Dart有一个方法级联运算符,它对于不返回的方法调用this或另一个对象非常有用。

我很难编写上面的调用序列,而不必在后面分配一个变量sort然后重新启动调用链。

我想写相当于:

return thing
         .map(...)
         .toList()
         .sort(...)
         .fold(...)
         .sort(...)
         .expand(...)
         .toList();
Run Code Online (Sandbox Code Playgroud)

我能得到的最接近的是:

var thing
      .map(...)
      .toList()
        ..sort(...);

var otherThing = thing
                   .fold(...)
                     ..sort(...);

var finalThing = otherThing.expand(...).toList();
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?如何“脱离”级联并继续连锁?

Gre*_*owe 5

您可以添加一些括号吗?我猜是这样的...

return ((thing
         .map(...)
         .toList()..sort(...))
           .fold(...)..sort(...))
             .expand(...)
             .toList();
Run Code Online (Sandbox Code Playgroud)