string is rarely useful as a function argument

Jonathan M Davis jmdavisProg at gmx.com
Wed Dec 28 12:48:50 PST 2011


On Wednesday, December 28, 2011 19:25:15 Jakob Ovrum wrote:
> Also, 'in char[]', which is conceptually much safer, isn't that
> much longer to type.
> 
> It would be cool if 'scope' was actually implemented apart from
> an optimization though.

in char[] is _not_ safer than immutable(char)[]. In fact it's _less_ safe. 
Itals also far more restrictive. Many, many functions return a portion of the 
string that they are passed in. That slicing would be impossible with scope, 
and because in char[] makes no guarantees about the elements not changing 
after the function call, you'd often have to dup or idup it in order to avoid 
bugs. immutable(char)[] avoids all of that. You can safely slice it without 
having to worry about duping it to avoid it changing out from under you.

- Jonathan M Davis


More information about the Digitalmars-d mailing list