writeln wipes contents of variables ?
anonymous via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jan 21 17:49:58 PST 2016
On 22.01.2016 01:49, W.J. wrote:
> How can I identify those ranges, or, how can I tell if any particular
> range has value semantics ? I didn't read any of this in the manual -
> not that I could remember anyways.
Generally you shouldn't. If you care about it either way, use .save or
std.range.refRange.
If you don't want some range r to be consumed by some operation, pass
r.save instead of plain r. If you want r to be consumed, pass
refRange(&r). Only if you don't care if r is consumed or not, should you
pass simply r.
If you know for a fact that copying r is the same as r.save, then you
can just pass (and copy) r, of course. We know it's that way with
dynamic arrays, because of their nature as pointer+length structures.
But there's nothing wrong with calling .save on an array anyway.
Also, when a function takes a range via a ref parameter, then you don't
need refRange, of course. The ref parameter ensures that no copy is made
and that the original range is affected by the function.
More information about the Digitalmars-d-learn
mailing list