I want to do something like this, is it possible?
func allUnwrapOrNil<each Element>(over element: repeat (each Element)?) -> (repeat each Element)? {
let result: (repeat each Element)
for (value, resultTarget) in repeat (each element, each result) {
guard let value else {
return nil
}
resultTarget = value
}
return result
}
This can be just a bikeshedding, but I think generalized repeat
syntax instead of for ... in
can be a good alternative.
func == <each Element: Equatable>(lhs: (repeat each Element), rhs: (repeat each Element)) -> Bool {
repeat {
guard each lhs == each rhs else { return false }
}
return true
}
This way, current repeat each element
can be considered 'expression' version of repeat
statement, which makes much consistency with if
and switch
.