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.