我是 Dart 新手。
我很难找到一种易于阅读的方法来“安全”访问任何索引处的列表元素
final List<String> myList = <String>[]
myList.add("something")
// ...
String myGetter(int index) {
// "heavy" way
if (index < myList.length) {
return myList[index]
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用常规[index]
或elementAt(index)
并且索引超出边界,它会抛出RandeError
有没有一种方法在无法到达索引时返回 null?
抱歉,如果重复发布,但我试图找到信息但没有成功,+不确定是否有(非)官方的松弛/不和谐来提出这种“简单”的问题
lrn*_*lrn 10
Dart 列表不允许无效索引。尝试时没有内置方法可以获取 a null
。不在平台库中。
您可以创建自己的辅助函数(就像您已经做的那样):
T? tryGet<T>(List<T> list, int index) =>
index < 0 || index >= list.length ? null : list[index];
Run Code Online (Sandbox Code Playgroud)
(记得也要检查负索引)。
按照建议,您还可以将其添加为扩展方法:
extension ListGetExtension<T> on List<T> {
T? tryGet(int index) =>
index < 0 || index >= this.length ? null : this[index];
}
Run Code Online (Sandbox Code Playgroud)
这可能会让合作变得更加愉快。
(我建议不要做一些坏事然后捕获错误,至少当您可以轻松地预先检查它是否坏时)。
归档时间: |
|
查看次数: |
3303 次 |
最近记录: |