簡體   English   中英

我可以將協議類型傳遞給泛型類嗎

[英]Can i pass protocol type to generic class

我有一個協議 A 並且有多個符合協議 A 的結構。我需要在一個集合中存儲不同的結構對象。 但是我的集合類型是由另一個服務預定義的,該服務類型為 - class Storage<Value:Codable>。 我無法將值類型作為 A 傳遞,它會拋出一個錯誤,指出協議 A 不符合可解碼類型。 我只想知道這是否是傳遞自定義協議的正確方法,我可以使自定義協議符合 Codable 協議。 示例代碼片段。

任何想法都會有所幫助

class Storage<Value: Codable>{}

protocol A {}

struct Type1: A, Codable, Equatable, Comparable {}
struct Type2: A, Codable, Equatable, Comparable {}

let storage = Storage<A>() // Throws error - Type 'A' does not conform to protocol 'Decodable'

使用基本類

class Storage<Value: Codable>{}

protocol A {}

class Type: A, Codable {}
class Type1: Type, Equatable, Comparable {}
class Type2: Type, Equatable, Comparable {}

let storage = Storage<Type>()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM