尝试这样做:
var = obj?.Prop ?: obj.Prop.toLowerCase()
但我不断得到:
java.lang.NullPointerException: Cannot get property 'Prop' on null object
这不就是?
的目的吗?我的理解是obj?。道具与以下相同:
if ( obj != null && obj.Prop ) { .. }
有时 obj 为空,但如果不是,我想设置 obj。Prop 为小写 - 不能在空对象上设置为小写((
你需要做obj?.Prop?.toLowerCase()
猫王运算符(?:
(导致obj.Prop.toLowerCase()
在obj?.Prop
为空时被计算。相当于写作
var = (obj?.Prop != null) ? obj.Prop : obj.Prop.toLowerCase()
?: 后面的表达式是前面表达式为 null 的情况的替代表达式。如果在替代项中使用与上一部分相同的对象,则将触发 npe
而是做
obj?.Prop?.toLowerCase()