A template construct like using()
H. S. Teoh
hsteoh at quickfur.ath.cx
Tue Apr 26 21:57:19 UTC 2022
On Tue, Apr 26, 2022 at 09:33:43PM +0000, Chris Katko via Digitalmars-d-learn wrote:
[...]
> I'm looking for a construct that mimics using(var)/with(var)
>
> ````D
> bitmap* b;
>
> draw_with(b)
> {
> draw_pixel(red, 16, 16); //draw red pixel to bitmap b (b is implied above)
> }
> ````
>
> But the code ends up being:
> ````D
> bitmap* b;
>
> set_target_bitmap(b); //entry code
> draw_pixel(red, 16, 16); // body
> set_target_bitmap(original_target); // exit code
> ````
>
> The essence is wrapping something the code up in a kind of RAII-like
> entry and exit code that references a given target variable.
[...]
Kinda ugly-looking, but here's the first idea that came to mind:
bitmap* b;
{
set_target_bitmap(b);
scope(exit) set_target_bitmap(original_target);
draw_pixel(...);
... // blah blah blah
} // scope(exit) runs here
T
--
Unix was not designed to stop people from doing stupid things, because that would also stop them from doing clever things. -- Doug Gwyn
More information about the Digitalmars-d-learn
mailing list