我有几种要比较的“任何”值类型。
var any1: Any = 1 var any2: Any = 1 var any3: Any = "test" var any4: Any = "test" print(any1 == any2) print(any2 == any3) print(any3 == any4)
使用==运算符会显示错误:
“二进制运算符’==’不能应用于两个’Any’(aka’protocol <>’)操作数”
这样做的方式是什么?
唯一的方法是使用带有==类型参数的函数,然后比较值是否都是该类型的值:
==
func isEqual<T: Equatable>(type: T.Type, a: Any, b: Any) -> Bool { guard let a = a as? T, let b = b as? T else { return false } return a == b }
现在,使用上面的变量,您可以像这样比较它们:
var any1: Any = 1 var any2: Any = 1 var any3: Any = "test" var any4: Any = "test" isEqual(type: Int.self, a: any1, b: any2) // true isEqual(type: Int.self, a: any2, b: any3) // false isEqual(type: String.self, a: any3, b: any4) // true