Tag: 协议

无法在Swift中将协议用作其他协议中的关联types

我有一个协议Address ,它从另一个协议inheritance, Validator和Address满足扩展中的Validator要求。 还有另一种协议, FromRepresentable ,它有一个associatedType ( ValueWrapper )要求,应该是Validator 。 现在,如果我尝试使用Address作为associatedType ,那么它不会编译。 它说, 推断types“地址”(通过匹配要求'valueForDetail')是无效的:不符合'Validator'。 这个用法是非法的吗? 我们不应该使用Address来代替Validator ,因为所有的Addresses都是Validator 。 下面是我正在尝试的代码片段。 enum ValidationResult { case Success case Failure(String) } protocol Validator { func validate() -> ValidationResult } //Address inherits Validator protocol Address: Validator { var addressLine1: String {get set} var city: String {get set} var country: String […]