[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
passing structure elements... by value?
- Subject: passing structure elements... by value?
- From: Randall Skelton <rhskelto(at)atm.ox.ac.uk>
- Date: Fri, 13 Jul 2001 17:03:39 +0100
- Newsgroups: comp.lang.idl-pvwave
- Organization: Oxford University, England
- Xref: news.doit.wisc.edu comp.lang.idl-pvwave:25684
Hi all,
I am seem to be somewhat confused on passing structure... this *almost*
seems like one of those dreaded 'pass by reference/pass by value'
problems...
I have a simple routine that increments the value of a structure:
pro test, mod_struct
for i=0, n_tags(mod_struct)-1 do begin
mod_struct.(i) = mod_struct.(i) + 1
endfor
end
As expected, this will increment all of the values in a passed structure.
IDL> struct = {A:0, B:0} & big = replicate(struct,3)
IDL> print, big
{ 0 0}{ 0 0}{ 0 0}
IDL> test, big
IDL> print, big
{ 1 1}{ 1 1}{ 1 1}
But, when I try and increment a single element in the structure it fails?
IDL> struct = {A:0, B:0} & big = replicate(struct,3)
IDL> test, big[0]
IDL> print, big
{ 0 0}{ 0 0}{ 0 0}
^^^^^^^^^^^^^^^^^^
I expected the ^^ element above to be ones? Is there any way to force IDL
to pass this by reference instead of passing by value? It would be nice if
you could put brackets around the thing you want to pass by reference...
something like '(big[0])'
Have a good weekend all!
Randall
PS: I'm sure Liam's new book answers this...