the post below is copied straight from here.
Here I'll show a cool snippet code making use Vala async functions and iterators for emulating Python/Ruby generators. Creating a generator is as simple as extending the Generator class and implementing the generate() method.
abstract class Generator{ private bool consumed; private G value; private SourceFunc callback; public Generator () { helper (); } private async void helper () { yield generate (); consumed = true; } protected abstract async void generate (); protected async void feed (G value) { this.value = value; this.callback = feed.callback; yield; } public bool next () { return !consumed; } public G get () { var result = value; callback (); return result; } public Generator<G> iterator () { return this; } } class IntGenerator : Generator<int> { protected override async void generate () { for (int i=0; i < 10; i++) { yield feed (i); } } } void main () { var gen = new IntGenerator (); foreach (var i in gen) { message ("%d", i); } }
You can find the above code snippet here as well.
3 comments:
Good post!
SRI ANNAPOORNESHAWARI ASTROLOGY CENTER.Best Astrologer In Georgia
Nice pick. it's very Useful Article.
SRIKRISHANA ASTROLOGY.Vashikaran Astrologer in Bangalore
it was great information and very useful
ABHIRAM ASTROLOGY CENTER.Best Astrologer In hbr-layout
Post a Comment