在Swift扩展方法(数组)中使用未声明的类型'Element'

时间:2018-11-28 01:30:07

标签: ios swift generics namespaces protocols

我正在使用泛型和协议为Utils类创建名称空间。当我进入[Array]时,遇到了一些问题。这是代码:

在名称pce.swift中: enter image description here 并在数组扩展中: enter image description here 谁能告诉我该如何解决?


更新: 我将代码更改为: enter image description here

在这里我还有另一个问题,我在函数中使用了“ Self”。但是T:序列类型没有“ index”的成员。

1 个答案:

答案 0 :(得分:0)

不确定您要在此处实现什么(以及是否仍然有意义),但应将泛型限制为RangeReplaceableCollection(才能使用remove(at:))而不是SequencefirstIndex(of:)方法(返回第一个匹配元素的索引)在Collection的{​​{1}}上可用。

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