Alex Burton wrote:
I think it makes no sense to have nullable pointers in a high level language 
like D.

In D :

X x = new X;
This is a bit redundant, if we take away the ability to write X x; to mean X x 
= 0; then we can have X x; mean X x = new X;
If the class has a ctor then we can write X x(32); instead of X x = new X(32);
Only when the types of the pointer and class are different do we need to write 
X x = new Y;
We can do this syntactically in D because classes cannot be instantiated on the 
stack (unless scope is used, which I have found a bit pointless, as members are 
not scope so no deterministic dtor)

This makes the code much less verbose and allows code to change from X being a 
struct to X being a class without having to go around and change all the X x; 
to X = new X;

As I said in the nullable types thread:
Passing 0 or 0x012345A or anything else that is not a pointer to an instance of 
X to a variable declared as X x is the same as mixing in a bicycle when a 
recipe asks for a cup of olive oil.

There are much better, and less error prone ways to write code in a high level 
language than allowing null pointers.

Alex

How would you do this?

X x;

if(someCondition) {
  x = new SomeX();
} else {
  x =  new SomeOtherX();
}

Reply via email to