Remus
Namespace
rswhite4 at googlemail.com
Tue Oct 9 12:10:00 PDT 2012
As promised, a little description of Remus. :)
Not Null references:
I chose this syntax: int& b = a; because I like it in C++. This
syntax is recognized by Remus and is converted to: Ref!(int) b =
a;
If you must give a reference to a function or other things like
that, you can write:
[code]
Foo obj = new Foo();
some_function(@obj)
[/code]
instead of
[code]
Foo obj = new Foo();
{
Foo& robj = obj;
some_function(robj);
}
[/code]
Namespaces: You can declare a namespace this way:
[code]
namespace io {
void print() {
writeln("foo");
}
}
[/code]
you _cannot_ use it without explicit "use" statement (will maybe
change). So you must write
[code]use io;[/code] to use _all_ methods from "io", or, like
import, [code]use io : print[/code] or [code]use io : write =
print;[/code]
"use" statements are converted to one or more alias' and
namespaces to (mixin) templates.
not null safe invocation:
If you have an object which can be null, you can write:
obj?.print(); the print method is only called, if obj is not null.
It works even with more than one '?': obj?.getOtherObj?.print();
but then you have to take care of some special weakneses:
Until now you can not write obj?.getOtherObj()?.print() because
the parent's aren't recognized as valid identifiers for '?'.
So you must use properties or this workaround:
[code]
Foo otherObj = obj?.getOtherObj(); // otherObj is null if obj is
null
otherObj.print();
[/code]
Furthermore you cannot use '?' in the middle or end, or with
breaks.
So these are valid: a?.b.c and this a?.b?.c but these a.b?.c and
a?.b.c?.d not.
I described some more examples, do's and don't's on my website.
Stack Instances:
There aren't many words for: if you need a stack instance, write:
local Foo f = new Foo(); it's more or less the same as scope.
My next version will contain the elvis operator:
[code]
Foo obj = otherObj.get() ?: null;
if otherObj.get() is _not_ null, it will assign to obj, otherwise
obj will be assigned with null.
[/code]
And maybe cast's with 'as'. But my main interests are to fix the
bugs and weakneses.
That's it. Sorry for the few words, but I'm a bit busy right now.
If you have questions or suggesstions you can write it here,
I will read it every evening.
More information about the Digitalmars-d-announce
mailing list