"Best" way of passing in a big struct to a function?
    thedeemon 
    dlang at thedeemon.com
       
    Tue Oct  9 23:59:54 PDT 2012
    
    
  
On Wednesday, 10 October 2012 at 04:55:48 UTC, Val Markovic wrote:
> Oh, and a related question: what is the best way to pass in an 
> associative array like CustomStruct[string]? I can't say I'm 
> too clear on how AA's are managed/implemented. Do they have 
> value semantics or reference semantics?
Good question, I'd like to get some clarification on it too. 
Because it doesn't behave like, for example, class which surely 
has reference semantics.
When I've got a class
class C {
   int m;
}
and pass an object of this class to a function,
void mutate_C(C c)
{
   c.m = 5;
}
it follows reference semantics and its contents gets changed.
However if I pass an assoc. array to a function which changes its 
contents
void mutate_AA(string[int] aa)
{
   foreach(i; 0..10)
     aa[i*10] = "hi";
}
Then this code
   string[int] aa;
   mutate_AA(aa);
   writeln(aa);
outputs "[]" - changes are not applied.
It's only after I change parameter to "ref string[int] aa" its 
value get changed successfully.
    
    
More information about the Digitalmars-d-learn
mailing list