是否可以将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]
或[]
,但是如果它可以返回2
或null
会很好。不引入变量就可以吗?
最佳答案
有一个可识别空值的传播运算符(...?
),但是您的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。