Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: r/w access to calling function's $@

On Tue, 13 May 2014 18:42:06 +0200
Roman Neuhauser <neuhauser@xxxxxxxxxx> wrote:
> > Failing that you have to do something nasty like using "eval" to avoid
> > exposing the point where it gets transferred to the current argument
> > set.
> not sure what exactly you have on mind here, could you give me a sketch?

Use "reply" as alluded to by Bart but disguise the update to argv.  I
can't think of a good reason to do this rather than just living with the
limitation and manipulating $reply explicitly.  Also, this method makes
it hard to pass *in* arguments.

   typeset -g reply # in case the caller didn't localise it
   reply=(my reply value)


# Call a function, disguising the fact that it updates $argv.
eval $my_disguise

Bart's idea of an EXIT trap is a bit neater.  For functions the EXIT
trap explicitly gets called in the caller's scope.

% print $*

% pass_back() { trap 'argv=(my results)' EXIT; }
% pass_back
% print $*
my results

There's still what amounts to an eval in there, however.


Messages sorted by: Reverse Date, Date, Thread, Author