我是新来的
我很难找到一种易于阅读的方法来“安全地”访问任何索引处的List元素
final List<String> myList = <String>[]
myList.add("something")
// ...
String myGetter(int index) {
// "heavy" way
if (index < myList.length) {
return myList[index]
}
return null;
}
如果我使用常规的[index]
或elementAt(index)
,并且index超出了边界,则会抛出RandeError
有没有一个方法,当索引无法到达时返回null?
对不起,如果双重张贴,但我试图找到信息没有任何成功,+不知道是否有一个(联合国)官方松弛/不和谐问这种“简单”的问题
5条答案
按热度按时间ftf50wuq1#
Dart列表不允许无效索引。没有内置的方法来获得一个
null
时,尝试。不在平台库中。你可以创建自己的helper函数(就像你已经做的那样):
(也要检查负指数)。
按照建议,您也可以将其添加为扩展方法:
这可能会让它更好用。
(我建议不要做一些不好的事情,然后捕捉错误,至少当你可以很容易地检查它是否是坏的)。
pzfprimi2#
您可以定义一个extension method来捕获
RangeError
并返回null
:hfyxw5xn3#
你可以试试这个
qnakjoqk4#
根据documentation:
如果index超出范围,则抛出RangeError。
所以你可以使用try-catch块:
如果你想格外小心,我想你可以在最后放一个通用的
catch
(以捕获所有不是RangeError的抛出),但在这样一个简单的getter中,我认为这是不必要的:4si2a6ki5#
现在你可以使用
elementAtOrNull
来创建一个列表,https://api.dart.dev/stable/3.0.1/dart-collection/IterableExtensions/elementAtOrNull.html