下面的代码给了我一个警告:
同类型要求使得泛型参数‘Tagger’和‘Value’等价;这是 Swift 6 中的错误
虽然这仍然有效,但我更愿意摆脱这个警告。 我见过删除通用解决了问题的情况,但我确实需要将其设为通用,以便我可以从协议“Taggable”访问“标签”。
有人知道如何解决这个问题吗?
protocol Taggable: Identifiable {
var tag: Self { get }
}
extension Binding {
func taggable<Tagger: Taggable>() -> Binding<Value> where Value == Tagger {
return Binding(
get: { self.wrappedValue.tag },
set: { self.wrappedValue = $0 }
)
}
}
答案如下:
protocol Taggable: Identifiable {
var tag: Self { get }
}
extension Binding where Value: Taggable {
func taggable() -> Binding<Value> {
return Binding(
get: { self.wrappedValue.tag },
set: { self.wrappedValue = $0 }
)
}
}