Arrays 如何从具有重复范围的阵列中获取具有唯一范围的阵列?
我可以从具有重复数字的数组中获得唯一数字的数组Arrays 如何从具有重复范围的阵列中获取具有唯一范围的阵列?,arrays,swift,set,range,hashable,Arrays,Swift,Set,Range,Hashable,我可以从具有重复数字的数组中获得唯一数字的数组 let arrayWithReapeats = [1, 2, 3, 7, 3] let unique = Array(Set(arrayWithReapeats)) 我需要一个具有唯一范围的数组 Range<String.Index> 范围 例如,从具有重复范围的数组中 let arrayWithReapeatsIdexes = [1..<5, 3..<9, 9..<25, 3..<9] 让arrayWi
let arrayWithReapeats = [1, 2, 3, 7, 3]
let unique = Array(Set(arrayWithReapeats))
我需要一个具有唯一范围的数组
Range<String.Index>
范围
例如,从具有重复范围的数组中
let arrayWithReapeatsIdexes = [1..<5, 3..<9, 9..<25, 3..<9]
让arrayWithReapeatsIdexes=[1..试试以下方法:
extension SequenceType where Generator.Element: Equatable {
func unique() -> [Generator.Element] {
var seen: Array<Generator.Element> = []
return filter {
if seen.contains($0){
return false
} else {
seen.append($0)
return true
}
}
}
}
Generator.Element所在的扩展序列类型:equalable{
func unique()->[Generator.Element]{
变量:数组=[]
回流过滤器{
如果看到。包含($0){
返回错误
}否则{
seen.append($0)
返回真值
}
}
}
}
哈希值的唯一要求是
x==y
意味着x.hashValue==y.hashValue
这意味着“平凡”散列函数
extension Range : Hashable {
public var hashValue: Int {
return 0
}
}
有效且有效:
let arrayWithRepeatingIndexes = [1..<5, 3..<9, 9..<25, 3..<9]
let arrayWithUniqueIndexes = Array(Set(arrayWithRepeatingIndexes))
print(arrayWithUniqueIndexes)
// [Range(1..<5), Range(3..<9), Range(9..<25)]
或者从描述字符串计算哈希值(例如“3..谢谢!如果无法使用Set,我将尝试。我也尝试过使用NSRanges数组而不是Ranges类型的数组,它不能使用NSRange而不是扩展中的Range-NSRange不符合协议等式。我应该更改什么?(我应该作为一个新问题问这个问题吗?@VYT这意味着您必须为NSRange实现=
。
public var hashValue: Int {
return startIndex.distanceTo(endIndex).hashValue
}
public var hashValue: Int {
return description.hashValue
}