On 2016-01-08 14:50, Walter Bright wrote:

No:

1. first "ns.a" looks up "ns". Finds it in the current module, "main.ns".
2. Looks "a" up in "main.ns". "a" is not there. Error.

"a()" works because:

1. Look up "a" in current module. Doesn't find it.
2. Look up "a" in import "foo".
    1. doesn't find it. Look in imported scope "foo.ns". finds it.
3. Look up "a" in import "bar".
    1. doesn't find it. Look in imported scope "bar.ns". Doesn't find it.

Found only one "a" in the imports. We have da winnah!

I think name lookup rules are straightforward in D. I explain them over
and over, for years, and nobody but me understands them. I find it very
frustrating.

Yeah, I know, you have explained it several times. Although it doesn't always feel intuitive when you're actually writing the code. It's not like the above rules are hard to understand, it's just that I don't think of the look up rules above when I'm actually writing code.

--
/Jacob Carlborg

Reply via email to