On Monday, 22 June 2015 at 18:07:36 UTC, Ali Çehreli wrote:
On 06/22/2015 10:03 AM, Assembly wrote:

> foreach(int i, MyType p; places) {
>
> but I get this error:
>
> Error: cannot infer argument types, expected 1 argument, not 2

Yeah, the loop counter is automatic only for slices. You can use 'enumerate' for other types:

    foreach (i, element; NumberRange(42, 47).enumerate) {
        // ...
    }

That is taken from the same page: ;)


http://ddili.org/ders/d.en/foreach_opapply.html#ix_foreach_opapply.loop%20counter

Ali

if my opApply() is defiend as the following:

int opApply(int delegate(ref int, ref T) del)
        {
                int result;

                foreach(int i, T val; _app.data)
                {
                        result = del(i, _app.data[i]);
                        
                        if(result)
                                break;
                }

                return result;
        }

and called like:

foreach(int i, MyType p; places) {

isn't i the loop counter?

Reply via email to