What are (were) the most difficult parts of D?

Steven Schveighoffer schveiguy at gmail.com
Thu May 12 01:42:40 UTC 2022


On 5/11/22 9:06 PM, Christopher Katko wrote:

> I just realized foreach copies by value by default. Maybe. Sometimes. 
> When? I don't even know anymore. Because I "thought" I had to use 
> foreach(ref) to be able to affect the original data structure (because 
> by value means its a copy, right?). Except somehow everything has been 
> working just fine, mutating the original structure/array from inside 
> foreach and adding foreach(ref) makes no changes. Will it be faster? 
> Maybe... who knows.

ref can be confusing depending on the type. foreach indeed does 
everything by value unless you specify ref. But some types "act like" a 
ref. Remember, the copy is a *shallow* copy. So a "copy" of an array 
slice, for example, still refers to the original elements.

-Steve


More information about the Digitalmars-d-learn mailing list