假设我们必须在对象“ObjectD”上设置属性。为了获得这个对象,我们必须经过可为空对象的路径:
objectA.objectB?.objectC?.objectD?.property = 1234
问题是,必须检查每个对象,如果为null,则应创建它。
没有if语句,有没有办法做到这一点?
if (objectA.objectB == null) {
objectA.objectB = ObjectB().apply {
objectC = ObjectC().apply {
objectD = ObjectD().apply {property = 1444}
}
}
} else {
if (objectA.objectB.objectC == null) {
objectA.objectB.objectC = ObjectC().apply {
objectD = ObjectD().apply {property = 144}
}
}
}
最佳答案
我个人不避免使用if
或可能避免使用三元运算符(? :)
但是,我通常会确保在使用之前,我将要使用的所有对象都不为空。
在您的情况下,我将避免嵌套if
,方法是:
val wasBNull = false
val wasCNull = false
if (objectA.objectB == null) {
wasBNull = true
objectA.objectB = ObjectB()
}
if (objectA.objectB.objectC == null) {
wasCNull = true
objectA.objectB.objectC = ObjectC()
}
// ...
关于kotlin - 许多可为空的对象,如何在路径末尾设置属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59857674/