gpt4 book ai didi

kotlin - 在Kotlin中进行空检查的简短功能代码

转载 作者:行者123 更新时间:2023-12-02 13:21:14 26 4
gpt4 key购买 nike

我有一个测试函数并返回Int。

  fun test ():Int {

colors?.let { colorsArrayList ->

color1 = colorsArrayList.getOrNull(0)?.let {
return if (HexColorValidator().validate(it)) {
Color.parseColor(it)
} else {
Color.parseColor("#8DE7C1")
}
} ?: kotlin.run {
return Color.parseColor("#8DE7C1")
}

} ?: run {
return Color.parseColor("#8DE7C1")
}

return Color.parseColor("#8DE7C1")
}
}

那我现在可以写简介吗?
return Color.parseColor("#8DE7C1")

这很重复。可以简述此行代码吗?

最佳答案

每当我看到带有很多条件逻辑的代码时,我都试图记住我可以向右“ push ”空值。不用每次都需要测试null时处理if / else,而是想象您只是采用了想要的内容(快乐的路径)并传递null。最终,最后,您将得到所需的答案或为null,并可以返回所需的值。

例如(大部分未经测试):

fun test() =
colors
?.getOrNull(0)
?.let { if(HexColorValidator().validate(it)) Color.parseColor(it) else null }
?: Color.parseColor("#8DE7C1")

使它更易于阅读的另一种方法是扩展 String(我想您在 colors中拥有什么)来隐藏对 HexColorValidator的调用:
fun String.parseColor(): Int? =
if (HexColorValidator().validate(this)) Color.parseColor(this)
else null

然后,您的 test()函数变得简单一些:
fun test(): Int =
colors
?.getOrNull(0)
?.parseColor()
?: Color.parseColor("#8DE7C1")

关于kotlin - 在Kotlin中进行空检查的简短功能代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56099865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com