英文:
Kotlin handle indexOutOfBounds for nested list objects
问题
我有一个嵌套的列表对象,就像下面的这个。如何避免索引越界异常?有没有一种惯用的方法来做这件事?
listA[0].listB[0].listC[0].department
英文:
I have an nested list objects. like the one below. How do I avoid indexOutOfBounds exception? Is there a idiomatic way to do it?
listA[0].listB[0].listC[0].department
答案1
得分: 4
你可以使用 getOrNull
(或 elementAtOrNull
,同样的效果)并将调用与空值检查链接在一起:
listA.getOrNull(0)?.listB?.getOrNull(0)?.listC?.getOrNull(0)?.department
有一些替代方案(例如 getOrElse
),它们可以让你以不同的方式处理回退值,但像这样链接可为空的调用是安全访问嵌套属性/项的典型方式,其中链中的某些内容可能为 null。
不要忘记,在调用之后,你还可以添加 ?:
Elvis 操作符,以返回链中的某些内容生成 null 时的不同值。
英文:
You can use getOrNull
(or elementAtOrNull
, same thing) and chain the calls with null-checking:
listA.getOrNull(0)?.listB?.getOrNull(0)?.listC?.getOrNull(0)?.department
There are a few alternatives (e.g. getOrElse
) which let you handle the fallback value in different ways, but using nullable calls chained like this is the typical way to safely access nested properties/items where something in the chain may be null.
Don't forget you can also add the ?:
elvis operator after the call to return a different value if something in the chain produced null.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论