我写了一个小的Swift函数,就像这样:
func compareTest(values: [[Double]]) {
if(values == [[1.0,2.0]]) {
// some code
}
}
但是当我尝试编译时,在比较处出现错误:
二进制运算符==不能应用于两个[[Double]]操作数。
我在这里搜索了相关问题。大多数答案都是错误信息具有误导性,人们使用了错误的类型(示例问题)。
有人能帮我吗?我是否写错了类型?
我写了一个小的Swift函数,就像这样:
func compareTest(values: [[Double]]) {
if(values == [[1.0,2.0]]) {
// some code
}
}
但是当我尝试编译时,在比较处出现错误:
二进制运算符==不能应用于两个[[Double]]操作数。
我在这里搜索了相关问题。大多数答案都是错误信息具有误导性,人们使用了错误的类型(示例问题)。
有人能帮我吗?我是否写错了类型?
public func ==<Element : Equatable>(lhs: [Element], rhs: [Element]) -> Bool
这意味着您可以将任何具有可比较项的数组进行比较。但是,这些数组本身不是Equatable
。
对于嵌套数组,没有定义这样的运算符。
您需要定义:
public func ==<Element : Equatable>(lhs: [[Element]], rhs: [[Element]]) -> Bool {
...
}
我不熟悉Swift,但在任何语言中,作为一般规则,不应使用等号运算符比较双精度值。相反,如果两个双精度值的绝对算术差小于一个epsilon,则应将它们视为相等。
var epsilon = 0.00000001;
if(fabs(v1-v2)< epsilon){ // values are considered equal
}