如何处理无效值:使用时有效值范围为空?操作员


var items = [];
var index = 0;
var value = items[index]; // returns invalid value error, understood!

我宁愿使用以下来防止错误

if (index < items.length) {
value = items[index];
}

由于Dart中有?运算符,我想知道有没有什么方法可以做这样的事情:

var value = items?.[0] ?? -1; 
var value = items?[0] ?? -1;

否。?用于null感知运算符(或用于三元运算符(。访问List的无效元素会引发异常,而不是返回null,因此null感知运算符对您没有帮助。

如果你愿意,你可以添加一个助手功能,并使其作为扩展更方便:

extension ListGet<E> on List<E> {
E? get(int index, [E? defaultValue]) =>
(0 <= index && index < this.length) ? this[index] : defaultValue;
}

现在你应该可以做了

var value = items.get(0, -1);

相关内容