gpt4 book ai didi

Kotlin 初始化 : how to fail

转载 作者:行者123 更新时间:2023-12-04 14:38:30 27 4
gpt4 key购买 nike

我需要解析 Firebase DataSnapshot (一个 JSON 对象)转换成一个数据类,其属性包括 enum 和 list。所以我更喜欢通过传递 DataSnapshot 来手动解析它进入二级构造函数。但是,如果 DataSnapshot 中缺少某些字段,我希望构建失败。 .在 Swift 中,它具有返回 null 的可失败初始化器,所以我知道它失败了。如何在 Kotlin 中做到这一点?

以下是我的尝试,但我认为您不能仅从构造函数返回,对吗?

data class Unit(val name: String, val type: UnitType, val components: List<Component>) {
constructor(snapshot: DataSnapshot) {
name = snapshot.child("name").value as? String ?: return
val typeString = snapshot.child("type").value as? String ?: return
type = UnitType.values().firstOrNull { it.abbrv == typeString } ?: return
...
}

}

最佳答案

require为此目的而设计的功能:

// ...
init {
require(foo == "bar") {
"$foo should be equal to 'bar'"
}
}

还有 requireNotNull , check , error和其他一些。这些在 Kotlin 中称为前提条件。这里没有魔法,它们只是一些辅助函数。您可以查看实际来源 here ,非常有用。有一篇关于该主题的相关博客文章 here .

关于Kotlin 初始化 : how to fail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51308742/

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