Yes, you could avoid temp with
set -A "${${(P)1}[pages]}[2]" 50
set -A "${${(P)1}[pages]}[3]" 100
set -A "${${(P)1}[pages]}[4]" 150
but that's not as clear or easily maintainable. You could also do
Agreed. If I won't have a clue what I was doing in six months then
KISS is best.
temp=${${(P)1}[pages]} # Note one less (P) and not an array
set -A "${temp}[2]" 50
set -A "${temp}[3]" 100
set -A "${temp}[4]" 150
Once I have this running -- the real function -- I'll try that.
or even
set -A "${temp}[2,4]" 50 100 150
No, because in the real function there's work to determine what
the values will be, they can't be assigned ahead of time.