On 2018-06-16 04:44, Jonathan M Davis wrote:

* The null conditional operator `?.`

It's been discussed before, and maybe we'll get it or something like it at
some point, but it really wouldn't help much with idiomatic D. The average D
program does a _lot_ less with classes than a language like C# does. Most
stuff is done with structs on the stack - especially with range-based
programming. That's not to say that certain types of programs couldn't
benefit from such syntax, but it's going to be a lot less common than it is
with C#. But it's also pretty trivial to write a helper function that does
the same thing if you really want a short-hand way to do it.

There's code in the DMD front end which screams for this operator.

The AST is built out of classes. It uses virtual functions to do down casting, i.e.

class Statement
{
    ForStatement isForStatement()
    {
        return null;
    }
}

class ForStatement : Statement
{
    ForStatement isForStatement()
    {
        return null;
    }
}

Statement s;
if (auto f = s.isForStatement) { f. ... }

--
/Jacob Carlborg

Reply via email to