在以下示例中,我的“类型”具有“选项”。我在Field结构中使用它们,因为Generics部分中的where子句确保它们是连贯的。
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属性是无用的。实际上我只是把它放在一起,因此可以用String的扩展示例来推断Option的类型。
struct StringOption: Option {
}
extension String: Type {
var typeOption: StringOption? {
return nil
}
}
所以我的问题是,我可以摆脱这个无用的属性,换句话说,我可以明确指定相关的类型吗?