Swift 无法应用受可等式二进制运算符约束的函数参数
我看不出哪里出了问题Swift 无法应用受可等式二进制运算符约束的函数参数,swift,generics,Swift,Generics,我看不出哪里出了问题 private func check<A: Equatable, B: Equatable>(_ value: (A, B)) { let message = String(describing: value.0) + " does not equal " + String(describing: value.1) XCTAssert(value.0 == value.1, message) } 私有函数检查(u值:(A,B)){ 让消息=字符
private func check<A: Equatable, B: Equatable>(_ value: (A, B)) {
let message = String(describing: value.0) + " does not equal " + String(describing: value.1)
XCTAssert(value.0 == value.1, message)
}
私有函数检查(u值:(A,B)){
让消息=字符串(描述:value.0)+“不等于”+字符串(描述:value.1)
xctasert(值.0==值.1,消息)
}
错误:二进制运算符“==”不能应用于“A”和“B”类型的操作数
Xcode版本9.4.1(9F2000)
Swift 4.1平等协议定义如下:
public protocol Equatable {
public static func == (lhs: Self, rhs: Self) -> Bool
}
这意味着对于一致性类型a
有一个=
运算符
取两个A
类型的操作数。换句话说,你可以
将a类型的值与相同类型a的另一个值进行比较——
但不一定使用不同类型的值B
(即使
也就是说,equalable
)
你的职能
func check<A: Equatable, B: Equatable>(_ value: (A, B))
例如,Int
和String
都符合equalable
,因此您可以调用
check((123, "abc"))
但这些价值无法比较
你可能想要的是
func check<A: Equatable>(_ value: (A, A)) { ... }
func检查(uvalue:(A,A)){…}
如果两个元组成员都是相同的equalable类型A
,equalable
协议定义为
public protocol Equatable {
public static func == (lhs: Self, rhs: Self) -> Bool
}
这意味着对于一致性类型a
有一个=
运算符
取两个A
类型的操作数。换句话说,你可以
将a类型的值与相同类型a的另一个值进行比较——
但不一定使用不同类型的值B
(即使
也就是说,equalable
)
你的职能
func check<A: Equatable, B: Equatable>(_ value: (A, B))
例如,Int
和String
都符合equalable
,因此您可以调用
check((123, "abc"))
但这些价值无法比较
你可能想要的是
func check<A: Equatable>(_ value: (A, A)) { ... }
func检查(uvalue:(A,A)){…}
其中两个元组成员属于相同的可等分类型A