我正在使用谷歌的承諾庫,我想創建沒有任何型別的承諾(因為我不需要任何型別)。
但是,我被迫選擇某種型別:
let promise = Promise<SomeType>.pending()
SomeType當我只需要異步流和例外捕獲的承諾,但我不想從函式回傳特定值時,是否有我可以傳遞的型別來代替它本質上意味著“無型別”?例如,某些型別的唯一有效值是nil?
我在多個地方遇到過這個問題,到目前為止我發現的唯一解決方法是始終提供非通用替代方案,但它變得非常乏味并導致重復代碼。
uj5u.com熱心網友回復:
型別是值Int的集合,就像是所有整數String的集合,是所有字符序列的集合等等。
如果考慮集合中的項數,則有一些特殊型別,恰好為 0 項和 1 項,并且在此類特殊情況下很有用。
Never是沒有值的型別。Never不能構造型別的實體,因為它沒有值(就像沒有案例的列舉一樣)。這對于將情況、代碼流等標記為“不可能發生”很有用,例如,編譯器可以知道回傳的函式Never永遠不會回傳。或者Never永遠無法呼叫需要的函式。回傳的函式Result<Int, Never>永遠不會失敗,但在函式回傳Result型別的世界中。但是因為永遠不能被構建,所以這里不是你想要的。這將意味著無法實作的承諾。
Void是恰好具有 1 個值的型別。它通常拼寫()在Void函式定義的左側和右側。void 的值并不有趣。制作一個回傳的函式很有用,Void因為它們就像其他語言呼叫的子例程或程序一樣。在這種情況下,它意味著可以實作但沒有任何價值的 Promise。因此,它只能用于其副作用。
uj5u.com熱心網友回復:
如果我們創建一個空類,這是正確的解決方案還是解決方法
類 Default_Class : Codable {
}
并將其用作 Promise<Default_Class>.pending
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/311176.html
