On 5/12/2011 2:23 AM, Walter Bright wrote:
Hi Walter,

Not sure what you mean by more complex than Java. The order of imports
in D is not important.

Hmm... Someone more experience in Java and also D might want to update this URL and help some new Java To D developer to figure out the import subtle differences
http://prowiki.org/wiki4d/wiki.cgi?JavaToD

> But it is quite common in Java to import >only
>exactly what you use, though I think that that's at least partially to >avoid
>symbol clashes, and D doesn't work quite the same way in that regard.
Yes. I agrees with Jonathan. Please take a look at these 2 blocks bellow.

In Java,

import java.util.*; // for LinkedList / HashMap
import java.sql.*;  // for JDBC API

class MyTable{
  void read(){
      ... // Obtain ResultSet
Date date=rs.getDate(1); // this line will always cause compilation error because both java.util & java.sql package has Date class.

  }

  void readFixed(){
      ... // Obtain ResultSet
java.util.Date date=rs.getDate(1); // this will fixed the compilation error while still keep both the imports.
  }
}

http://www.digitalmars.com/d/2.0/module.html

module A;
void foo();
void bar();
------------------------
module B;
void foo();
void bar();
------------------------
module C;
import A;
void foo();

// .... Due to the fact that there is only one D source file per module, and from what I can see, there are normally many functions/classes/others... in between here. The user of that function might have forgotten about the foo defined above.

void test()
{
// the line below is really >dangerous< and might have been missed out because it is NOT flagged. Such things are always flag within Java and also google Go and maybe c/c++. Hopefully this will be flag as compilation erro to others kind of syntax.
  foo(); // C.foo() is called, it is found before imports are searched
  bar(); // A.bar() is called, since imports are searched
}


--
Matthew Ong
email: on...@yahoo.com

Reply via email to