Swift 3Swift функции общего массива, чтобы найти все индексы элементов, не совпадающих элемент
Попытки написать общее расширение массива, который получает все индексы элементов, которые не равному значению
примера
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
}
}
Но что дает войну ning: Двоичный оператор не может применяться к операндам типа «Элемент» и «Т».
Итак, я сделал это, когда я бросил элемент (обратите внимание на , как?)
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]
Справка была бы принята с благодарностью.
Есть ли лучший способ сделать это с помощью уменьшить функция?
Спасибо! Отлично. – MH175