dart - 如何处理无效值:有效值范围为空使用?操作员
问题描述
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;
解决方案
No.?
用于null感知运算符(或三元运算符)。访问 a 的无效元素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);
推荐阅读
- java - 为什么 LinkedList 的 remove 方法不会发生 ConcurrentModificationException?
- wordpress - WP All Import: select a specific value separated by |
- java - Problems reading/writing in .jar
- node.js - mongoose conditional query returns unexpected doc
- python - Python Pandas: Pivot certain columns of a dataframe
- javascript - 如何使用反应在页面上显示击键
- psql - 在 psql 中批量更新 json 类型列
- mysql - 时间戳中以 m/d/y 为单位的日期。如何在mysql中转换为dd-mm-yyyy
- git - 如何在本地访问对分支所做的更改 git
- ruby-on-rails - Ruby on Rails 泊坞窗、数据库、应用时区对齐