Kotlin处理嵌套列表对象的索引越界错误

huangapple go评论64阅读模式
英文:

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.

huangapple
  • 本文由 发表于 2023年5月24日 19:32:47
  • 转载请务必保留本文链接:https://go.coder-hub.com/76323078.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定