是否可以将Dart Spread运算符和null感知运算符结合使用?

[
  1,
  ...twoOrNull() // this will be inserted only if it's null. something else than the ... operator will be here.
  3,
]

因此,列表将为[1, 2, 3][1, 3]。我猜twoOrNull()可以返回[2][],但是如果它可以返回2null会很好。

不引入变量就可以吗?

最佳答案

有一个可识别空值的传播运算符(...?),但是您的twoOrNull()函数必须返回[2]null; Spread运算符在另一个集合常量中扩展了一个Iterable,并且“传播” int没有任何意义。

还有Dart的collection-if构造,但是需要两次调用twoOrNull()或将结果保存在变量中:

[
  1,
  if (twoOrNull() != null) twoOrNull(),
  3,
]

有关传播和收集-if的更多信息,请参见the Lists section from the Dart Language Tour

10-08 07:10