[英]Kotlin initialization: how to fail
我需要將Firebase DataSnapshot
(一個JSON對象)解析為一個數據類,其屬性包括枚舉和列表。 所以我更喜歡通過將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
...
}
}
不,你不能只是從構造函數返回 - 它在概念上沒有多大意義 - 但由於我對Kotlin語法相當天真,我將在這里回答更廣泛的范例。
您的數據類不負責錯誤檢查或錯誤處理。 它只負責存儲數據。 因此,當且僅當沒有缺少字段時,您應該依賴工廠模式來解析DataSnapshot
的結果並有條件地實例化Unit
的新實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.