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]

Помощь будет принята с благодарностью.

Есть ли лучший способ сделать это суменьшить функционировать?

Ответы на вопрос(1)

Ваш ответ на вопрос