On Monday, 5 March 2018 at 23:42:59 UTC, Adam D. Ruppe wrote:
On Monday, 5 March 2018 at 23:34:50 UTC, askjfbd wrote:
string.d

The problem is you named the file string.d and didn't give a `module xxxxx;` statement in the code, so the compiler assumed the module is named after the file.... and thus introduced a local name `string` referring to the module, overriding the built in one.

You can still refer to the built in one by saying `.string foo = "bar";` - yes, the leading dot, which tells it to use the global instead of local name.

Or by putting `module mytest.string;` at the top, so the module has a two-part name (I recommend this in all cases anyway btw, it is the best way to avoid conflicts as you import more modules).

Or just renaming the file from string.d to almost_anything_else.d, which will also avoid the local name override.

Thanks for the precise advice. How foolish I was and how quickly you gave me the answer! I'll have to learn a lot more about D and more about modules. Since C and common lisp, which I have learned so far, have almost nothing to do with name conflicts, I couldn't imagine that I was still wrong. :) Thank you.

Reply via email to