associated-types

    3熱度

    2回答

    Swift是驚人的,但還不成熟,所以有一些編譯器限制,其中包括通用協議。由於類型安全考慮,通用協議不能用作常規類型註釋。我在Hector Matos的帖子中發現了一個解決方法。 Generic Protocols & Their Shortcomings 主要思想是使用類型擦除將泛型協議轉換爲泛型類,它很酷。但是在將這種技術應用於更復雜的場景時,我陷入了困境。 假設有一個抽象的Source產生數據

    0熱度

    1回答

    我試圖在Swift中實現Kotlin密封類的效果,以便我可以實現基於類的替代方法來使用關聯類型的枚舉。 編譯錯誤的結果如下: final class Foo { class Bar: Foo {} // Error: inheritance from a final class "Foo" } 有沒有辦法來有效地「密封」的進一步子類一類的雨燕,但仍允許子類擺在首位?

    1熱度

    2回答

    我正在嘗試爲我的應用程序創建數據模型。這裏是場景: 我的應用程序有客戶模型,其中包含客戶的信息,也包含他/她的支付來源。該API給我兩種支付來源:卡和銀行帳戶他們有完全不同的領域。 所以,這裏是我的問題,我想要具有PaymentSource的抽象類型,然後在每個PaymentSource中都有一個函數來將對象轉換爲它的類型。一些我是如何刪除類型的。 我需要把我的抽象類型放在一個盒子裏,並用它作爲具

    4熱度

    2回答

    我試圖定義與返回具有相同的壽命作爲一個參數相關聯的類型的函數的性狀的功能的性狀。 概念上類似如下(不工作:lifetime parameter not allowed on this type [Self::Output]): trait Trait { type Output; fn get_output<'a>(&self, input: &'a i32) -> Self:

    2熱度

    1回答

    是否可以要求某個類的關聯類型同義詞是某個其他類的實例?例如。用類似下面的代碼(不編譯): class Test a where type Foo a instance Show (Foo a) 我將能夠依靠的事實Foo a是Show能夠無論有關特定a的。 很明顯,我可以在類中添加更多方法來確保我想要的操作在Foo a上,但能夠重用現有類將會很好。

    2熱度

    2回答

    我有一個雨燕3項目中,我聲明瞭一個協議與關聯的類型是這樣的: protocol ViewModelContainer { associatedtype ViewModelType var viewModel: ViewModelType! { get set } } 而且我要檢查,如果兩個物體執行ViewModelContainer及其關聯的類型ViewModelType

    1熱度

    1回答

    使用相關類型的協議,我有問題: protocol Searchable{ func matches(text: String) -> Bool } protocol ArticleProtocol: Searchable { var title: String {get set} } extension ArticleProtocol { func ma

    1熱度

    1回答

    比方說,我們有一個協議定義爲: protocol PAT { associatedtype Element } ,我也有一個枚舉(典型的結果)定義爲: enum Result<Value> { case success(Value) case error(Error) } 現在我想添加當Element是Result<Value>但是編譯器不能確定Value

    1熱度

    1回答

    我需要聲明兩個協議,它們都具有associatedtypes: protocol MyView { associatedtype DataType associatedtype LayoutType : MyLayout var data: DataType { get } var layout: LayoutType { get } func

    0熱度

    1回答

    我想創建一個類,可以被描述爲:a)保持某種類型的屬性,如T,並保留另一種類型的屬性,可以更新同一類型,T。我認爲最好通過我的(非工作)例如: protocol Updater { associatedtype UpdateType func update(withSuccess success: ((UpdateType) -> Void)?, failure: ((NSErr