Equivalent to Python with Statement

Cym13 cpicard at openmailbox.org
Wed Feb 28 21:47:40 UTC 2018


On Tuesday, 27 February 2018 at 16:17:20 UTC, Jonathan wrote:
> I know Python's `with` statement can be used to have an 
> automatic close action:
> ```
>     with open("x.txt") as file:
>         #do something with file
>     #`file.close()` called automatically
> ```
>
> I know D's `with` statement does something different but is 
> there some sort of equivalent?

Others have discussed that particular case at length, but to 
provide a more generic answer the correct way to translate a 
python context manager is to use scope(out):

     { // Scope restriction similar to with's block
         auto f = File("x.txt");
         scope(out) f.close();   // closes f on scope exit no 
matter what

         /* do stuff with f */
     }

This accurately reproduces the behaviour of python's with 
although it's less automatic.


More information about the Digitalmars-d-learn mailing list