On 02/09/13 16:18, Artur Skawina wrote:
Requiring captures to be explicit would reduce the chance of such
bugs happening, but also have a significant cost and be a rather
drastic change to the language...
For what it's worth, I'm not advocating for any change in the language. I'm
simply highlighting a place where it's possible to shoot oneself in the foot :-)
In this case, there's no need for a delegate, as you do not want
to operate on the original object. So you can simply do:
//...
private void function(ref typeof(this)) _jump;
private void jump() { _jump(this); }
this(size_t max)
{
_max = max;
_jump = &jump10;
}
//...
static jump10(ref typeof(this)this_)
{
this_._count += 10;
writeln("At end of jump, count = ", this_._count);
}
It's cheaper than the other alternative (updating ctx in cpctor),
but slightly more verbose. More importantly, AFAICT, this is a
better fit for the actual problem.
Oh, nice thought. Thank you! :-)