Dynamic Calls
These routines let you call Phix procedures and functions using a
unique integer known as a routine_id,
rather than by specifying the name of the routine.
Since 0.8.3, a plain
Since 0.8.3, a plain
xxx
, not followed by '(', is equivalent to/treated by the compiler as
routine_id("xxx")
, and in a similar vein, after integer rid = xxx
the compiler will
treat rid(a,b,c)
as call_func/proc[depending on context](rid,{a,b,c})
. In other words
routine(id)s became first class citizens in 0.8.3, and while much of what follows is strictly speaking OTT, it
is probably still helpful to understand the basic mechanisms, which are all still at work, and occasionally can
be more flexible, for instance call_func(rid,args)
might cope with 3, 4, or 5 parameters in args,
whereas rid(a,b,c)
is quite obviously 3 and only 3 parameters, full stop. (OK, not quite
full stop, should you be looking for the equivalent of (say) JavaScript’s "..." spread operator, that is
when calling a routine, then call_func/proc implicitly achieves that).
routine_id | (deprecated, as above) get a unique identifying number for a Phix routine |
call_proc | call a Phix procedure using a routine id |
call_func | call a Phix function using a routine id |