func myFunction<each T: FixedWidthInteger>(_ t: repeat each T) -> (repeat each T) {
for value in repeat each t {
print(value)
}
var result = (repeat each t)
for dummy in repeat each ??? { // `result`, or `&result`, is in the ???
dummy += 1
}
return result
}
How can I write to each member of result one at a time? (I can't use an all-at-once functional solution here.) The actual needs are more complicated, but I need to work with the above first before asking new questions.
I think for now you're limited to an all-at-once functional solution.
It's not obvious from documentation, but you can call function on each element. In example below, I map simple { $0 + 1 } closure on each member of tuple.
Maybe something like this could meet your needs.
func myFunction<each T: FixedWidthInteger>(_ t: repeat each T) -> (repeat each T) {
return (repeat { $0 + 1 }(each t) )
}
// Prints:
// (2, 3, 4, 5)
let result = myFunction(1, 2, 3, 4)
print(result)
Unfortunately we don't have a way to actually mutate or initialize packs like that yet.
You can always use the "functional solution" actually, if you extract the body of your for loop into a local function foo() that returns the new value, and then you can do var result = (repeat foo(each t)) to form the result.