在Dart中,我如何只使用级联或链式调用来干净地映射/sort/fold/sort/expand

  • 本文关键字:sort 调用 映射 expand fold Dart 级联 dart
  • 更新时间 :
  • 英文 :


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

  • 地图
  • to列表
  • 排序
  • 褶皱
  • 排序
  • 展开
  • to列表

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

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

如果不在sort之后分配一个变量,然后再次启动调用链,我很难编写上面的调用序列。

我想写相当于:

return thing
         .map(...)
         .toList()
         .sort(...)
         .fold(...)
         .sort(...)
         .expand(...)
         .toList();

我能得到的最接近的是:

var thing
      .map(...)
      .toList()
        ..sort(...);
var otherThing = thing
                   .fold(...)
                     ..sort(...);
var finalThing = otherThing.expand(...).toList();

有更好的方法吗?如何"突破"级联并在链上继续?

你能添加一些parens吗?我想是这样的。。。

return ((thing
         .map(...)
         .toList()..sort(...))
           .fold(...)..sort(...))
             .expand(...)
             .toList();

最新更新