On Friday, 20 May 2016 at 06:40:42 UTC, Jacob Carlborg wrote:
On 2016-05-20 04:14, Yuxuan Shui wrote:

Hmm... This could work. But I'm not satisfied with this solution. What if I have multiple yield sites in the fiber, and each have different
return types?

Maybe I should use a Variant?

I think you can view "yield" as a form of "return". If you cannot return different types from a function (without it being a template) it would be weird if you could yield different types.

But this is yield as in coroutine, not yield as in generators. Those yields doesn't return value to the caller of the fiber.

Let's have an example:

void func() {
   string a = wait_for_user_input();
   int b = wait_for_user_to_click_a_button();
}

Those two wait()s could use yield internally to transfer execution back to the caller and wait for input. But it's difficult with current dlang fiber because there's no (elegant) way to pass data (preferably with different types) while transferring executing to/from fibers.

Reply via email to