Swift универсальная функция массива, чтобы найти все индексы элементов, не соответствующих элементу
Свифт 3
Попытка написать общее расширение массива, которое получает все индексы элементов, которые не равны значению
пример
let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"]
let result: [Int] = arr.indexes(ofItemsNotEqualTo item: "Empty")
//returns [2, 4]
Я попытался сделать общую функцию:
extension Array {
func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]? {
var result: [Int] = []
for (n,, elem) in self.enumerated() {
if elem != item {
result.append(n)
}
}
return result.isEmpty ? nil : result
}
}
Но это дает предупреждение:Двоичный оператор нельзя применять к операндам типа «Элемент» и «Т».
Итак, я сделал это, где я бросил элемент (обратите внимание накак?)
extension Array {
func indexes<T: Equatable>(ofItemsNotEqualTo item: T) -> [Int]? {
var result: [Int] = []
for (n, elem) in self.enumerated() {
if elem as? T != item {
result.append(n)
}
}
return result.isEmpty ? nil : result
}
}
Но теперь кажется, что проверка типов вышла из окна, потому что, если я передам целое число, я получу неправильный результат
let arr: [String] = ["Empty", "Empty", "Full", "Empty", "Full"]
let result: [Int] = arr.indexes(ofItemsNotEqualTo item: 100)
//returns [0, 1, 2, 3, 4]
Помощь будет принята с благодарностью.
Есть ли лучший способ сделать это суменьшить функционировать?