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);