Re: passing functions as arguments in IDL? [message #19257 is a reply to message #18725] |
Tue, 29 February 2000 00:00   |
davidf
Messages: 2866 Registered: September 1996
|
Senior Member |
|
|
Benno Puetz (puetz@mpipsykl.mpg.de) writes:
> David Fanning wrote:
>
>> Rick Baer (baer@hpl.hp.com) writes:
>>
>>> Is there any way to pass functions as arguments in IDL? I would
>>> like to be able to do something like this:
>>> ...
>>> IDL> print, tf1, f1, 4
>>
>> You can do this:
>>
>> function f1, x
>> return, x*x
>> end
>>
>> function tf1, func, arg
>> IF Size(func, /Type) NE 7 THEN BEGIN
>> Print, 'String argument required'
>> RETURN, -1
>> ENDIF
>> retVal = Call_Function(func, arg)
>> return, retVal
>> end
>>
>> IDL> print, tf1('f1', 4)
>>
>> Cheers,
>>
>> David
>> --
>
> Would it also be possible to pass argument lists of variable length,
> depending on the function to be called?
>
> I've tried the _EXTRA keyword but to no avail ...
If those arguments are *keywords* I should imagine _Extra
will work: :-)
function f1, x, Multi=multi
if n_elements(multi) eq 0 then multi=2
return, x*multi
end
function tf1, func, arg, _Extra=extra
IF Size(func, /Type) NE 7 THEN BEGIN
Print, 'String argument required'
RETURN, -1
ENDIF
retVal = Call_Function(func, arg, _Extra=extra)
return, retVal
end
IDL> print, tf1('f1', 4, Multi=3)
12
IDL> print, tf1('f1', 4, Multi=6)
24
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting
Phone: 970-221-0438 E-Mail: davidf@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
|
|
|