goto

BCS none at anon.com
Thu Feb 5 20:01:43 PST 2009


Hello Andrei,

> I was coding a simple Euclidean distance function with limit:
> 
> double euclideanDistance(Range)(Range a, Range b, double limit)
> {
> limit *= limit;
> double result = 0;
> for (; !a.empty; a.next, b.next)
> {
> enforce(!b.empty);
> auto t = a.head - b.head;
> result += t * t;
> if (result >= limit) goto thatsit;
> }
> enforce(b.empty);
> thatsit:
> return sqrt(result);
> }
> How would an elegant goto-less approach look like? It should not
> duplicate code, e.g. the call to sqrt.
> 
> Andrei
> 

I think this is a good reason for more scope(*) versions

you could fake it with

> for (; !a.empty; a.next || (enforce(b.empty), false), b.next)





More information about the Digitalmars-d mailing list