RAII

ketmar via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Feb 23 23:23:05 PST 2017


Arun Chandrasekaran wrote:

> On Thursday, 23 February 2017 at 09:57:09 UTC, ketmar wrote:
>
> Thanks for your help. NRVO looks interesting. However this may not be 
> RAII after all. Or may be too much of C++ has spoiled me. I am not 
> familiar enough with D to appreciate/question the language design 
> choice. I'll accept this and move forward and see how my code 
> evolves. Nevertheless, I'm still learning something new. :)

also, why structs at all? there are another ways! ;-)

  void doWithLock (scope void delegate () action) {
    lockSomething();
    scope(exit) unlockSomething();
    action();
  }

no, wait, this is not so limiting as it may look!

  void foo () {
    int i = 42;
    doWithLock({
      writeln("i=", i); // yay, 42!
    });
  }

this looks *almost* like `synchronized(obj) { ... }`! and if we'll ever 
press D devs to allow us to omit "()" when the only argument is 
arg-less lambda... it will be indistinguishable from built-in! ;-)


More information about the Digitalmars-d-learn mailing list