Я сделал вам простой пример того, как использовать enum в вашем контексте с функцией фильтра.
enum Foo {
case article(data: [Int])
case link(data: [String])
case `none`
static func myfilter(array: [Foo]) -> [Foo]{
var newArray:[Foo] = []
for element in array {
switch element {
case .article(let article):
newArray.append(.article(data: article))
case .link(let link):
newArray.append(.link(data: link))
case .none:
break
}
}
return newArray
}
}
let foo: [Foo] = [.article(data: [1,2,3]), .link(data: ["hello", "world"]), .none]
print(Foo.myfilter(array: foo))
Я сделал код, который вы можете скомпилировать и протестировать, вы должны изменить тип для Foo
, article
и link
.
Если вы хотите использовать перечисление, вы должны использовать switch case
.
Если вы абсолютно хотите использовать фильтр в swift, вы можете, но вам нужно реализовать протокол Sequence , который в этом случае более сложный.
Для каждого случая вашего перечисления вы должны управлять делом, которое использует концепцию сопоставление с образцом . Это очень мощный.