On 8/21/17 8:15 AM, Joshua Hodkinson wrote:
So I have run across the following issue while working with delegates and lambdas,


---
struct Struct {
     int prop;
}

alias Func = void delegate(ref Struct);
Func func = (ref s) => s.prop += 1;
---

with compiler error `Error: cannot return non-void from function`

I understand that the lambda syntax in this case would be short for

---
Func func = (ref s) { return s.prop += 1; };
---

But does this mean you can't have lambdas that return void?

Thanks

You can return void when your return type is void. When the return type is void, you can't return something other than void.

i.e., this should work:

alias Func = int delegate(ref Struct);

Or this:

void foo();

// with your original Func definition
Func func = (ref s) => foo();

You can also do this:

Func func = (ref s) { s += 1; };

-Steve

Reply via email to