1

在以下示例中,我的“类型”有一个“选项”。由于泛型部分中的 where 子句,我通过确保它们是连贯的,在 Field 结构中使用它们。

protocol Type {
    associatedtype O: Option
    var typeOption: O? { get }
}

protocol Option {

}

struct Field<T: Type, O: Option where T.O == O> {
    let type: T
    let option: O
}

它工作正常。但是 typeOption 属性是没用的。事实上,我只是把它放在了 Option 的类型上,就像 String 的扩展示例一样。

struct StringOption: Option {

}

extension String: Type {    
    var typeOption: StringOption? {
        return nil
    }    
}

所以我的问题是,我可以摆脱这个无用的属性,或者换句话说,我可以明确指定关联的类型吗?

4

0 回答 0