Использование необъявленного типа «Элемент» в методе быстрого расширения (массив) - PullRequest
0 голосов
/ 28 ноября 2018

Я использую Generics и протокол, чтобы создать пространство имен для моего Utils Class.и вот когда я иду в [Массив], я столкнулся с некоторой проблемой.Вот код:

в namespce.swift: enter image description here и в расширении массива: enter image description here Может кто-нибудь сказать мне, как я могу это исправить?


Обновление: я изменяю свой код на: enter image description here

, и здесь у меня есть другая проблема, я использую "Self" в функции.но тип T: Sequence не имеет члена "index".

1 Ответ

0 голосов
/ 13 декабря 2018

Не уверен, что вы пытаетесь достичь здесь (и если это все еще актуально), но вы должны ограничить свой универсальный RangeReplaceableCollection (чтобы иметь возможность использовать remove(at:)) вместо Sequence.Метод firstIndex(of:) (который возвращает индекс первого соответствующего элемента) доступен в Collection, где Element: Equatable.

extension JX_TypeWrapper where T: RangeReplaceableCollection, T.Element: Equatable {
  mutating func remove(object: T.Element) {
    if let index = SELF.firstIndex(of: object) {
      SELF.remove(at: index)
    }
  }
}

, который позволяет вам заключить массив в JX_TypeWrapper:

var array: [Int] = [1, 2, 3]
var wrapped = JX_TypeWrapper(value: array)
wrapped.remove(object: 2)
wrapped.SELF // [1, 3]
...