What is the best declaration type for a string like parameter?
    sigod via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Thu Jan 28 07:03:38 PST 2016
    
    
  
On Thursday, 28 January 2016 at 13:36:46 UTC, Puming wrote:
> I have a function that reads a line of string and do some 
> computation.
>
> I searched the forum and found that people use `const(char)[]` 
> or `in char[]` to accept both string and char[] arguments.
>
>
> What's the difference between `const(char)[]` and `in char[]`?
>
> If they are not the same, then which is better? If they are, 
> then why both forms exists?
`in char[]` is short for `scope const char[]` or `scope 
const(char[])`.
See http://dlang.org/spec/function.html#parameters
It depends on the situation. If possible I would use `in` 
modifier. If not then just `const`.
> I found it a bit confusing and not quite readable, so I made an 
> alias:
>
> alias str = const(char)[]
>
> and so far it works. But if `in char[]` is better, then I 
> cannot alias it:
>
> alias str = in char[]
>
> this does not compile.
Please, don't define such aliases. I'm sure a lot of developers 
will find it confusing. As I do.
`const(char)[]` or `in char[]` is perfectly understandable as 
soon as you know what it means.
Also, read this: http://dlang.org/spec/const3.html
    
    
More information about the Digitalmars-d-learn
mailing list