我想比较两个数组是否相等,这是我的代码:
var letteronloc = [String]();
letteronloc.append("test")
let characters = Array("test")
if(letteronloc == characters) {
}
Run Code Online (Sandbox Code Playgroud)
但我有一个错误:找不到接受提供的参数的==的重载
我认为这是因为数组不相等,因为第二个数组不是字符串数组.但我该如何解决这个问题呢?
我写了以下扩展名来删除我的数组中的重复项.
extension Array where Element : Equatable{
func removeDups() -> [Element]{
var result = [Element]()
for element in self{
if !result.contains(element){
result.append(element)
}
}
return result
}
}
Run Code Online (Sandbox Code Playgroud)
线性阵列
let linearArr = [1,2,2,3]
linearArr.removeDups() // [1,2,3] works well!
Run Code Online (Sandbox Code Playgroud)
多维数组
let multiDimArr : [[Int]] = [[1,2,3], [1,2,3], [1,2 ,4]]
multiDimArr.removeDups() // Error!
Run Code Online (Sandbox Code Playgroud)
类型[Int]不符合Equatable
我读到这里.答案说使用阵列比较==应该可行.它不能一直工作:
作品
if (["1", "2"] == ["1", "2"]){
print("true")
}
Run Code Online (Sandbox Code Playgroud)
不行
if ([1, 2] == [1, 2]){ // ERROR!
print("true")
}
Run Code Online (Sandbox Code Playgroud)
运算符'=='的模糊使用
这很特别.我可以比较数组的String …