Не уверен, что вы пытаетесь достичь здесь (и если это все еще актуально), но вы должны ограничить свой универсальный 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]