Swifters:
I’m dealing with a JSON API where sets of options are returned as
arrays of strings. Representing these as OptionSets seems ideal. I can decode
the arrays of strings into an array of individual OptionSet values, but I’ve
run into a dead end when trying generically reduce the array of OptionSets to a
single OptionSet value. I’ve tried variety of ways of definition a Collection
extension, even tried defining a global function, but I can’t seem to use the
OptionSet sequence initializer or reduce itself (cannot invoke insert with
argument of type (OptionSet) (or T)). Any guidance here?
Here’s what I’ve tried:
extension Collection where Iterator.Element == OptionSet {
func reduced() -> Iterator.Element {
return reduce(Iterator.Element()) {
var newResult = $0
newResult.insert($1)
return newResult
}
}
}
extension Collection where Iterator.Element == OptionSet {
func reduced<T: OptionSet>() -> T {
return reduce(T()) {
var newResult = $0
newResult.insert($1)
return newResult
}
}
}
extension Collection where Iterator.Element == OptionSet {
func reduced() -> Iterator.Element {
return Iterator.Element(self)
}
}
func reduced<T: OptionSet>(_ options: [T]) -> T {
return options.reduce(T()) {
var newResult = $0
newResult.insert($1)
return newResult
}
}
Jon Shier
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users