在以下示例中,我的“类型”有一个“选项”。由于泛型部分中的 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
}
}
所以我的问题是,我可以摆脱这个无用的属性,或者换句话说,我可以明确指定关联的类型吗?