如果需要布尔和可空检查,如何简化这个kotlin代码?

问题描述 投票:1回答:3

dataConfig对象有一个可以为空的布尔字段urlIsabled,并希望根据dataConfig.urlIsabled == null或dataConfig.urlIsabled的否定返回

val result = if (dataConfig.urlIsabled != null) (dataConfig.urlIsabled != true) else true)

可以简化吗?

kotlin
3个回答
4
投票

绘制一个简单的真值表:

| dataConfig.urlIsabled | result |
|-----------------------|--------|
|        null           |  true  |
|        true           |  false |
|        false          |  true  |
|-----------------------|--------|

所以除了true等于urlIsabled之外,所有情况下的结果都是true。因此它可以表示为:

val result = dataConfig.urlIsabled != true

1
投票

如果truedataConfig.urlIsDisablednull,你试图返回false

如果值等于false,只需反转逻辑并返回true

val result = !(dataConfig.urlIsabled == true)


0
投票

可以简化为:

val result = dataConfig.urlIsabled in listOf(false, null)
© www.soinside.com 2019 - 2024. All rights reserved.