Write a function g that behaves like an iterator. Explain if it can be used directly in a for loop.
List<int> g(int start) sync* { while (true) { yield start; start++; } }
func generator() chan int { ch := make(chan int, 16) go func() { defer close(ch) timeout := time.After(2 * time.Minute) for i := 0; i < 1024; i++ { select { case ch <- i: case <-timeout: return } } }() return ch }
import static java.util.stream.Stream.generate; import java.util.Random; import java.util.function.Supplier; import java.util.stream.Stream;
Random r = new Random(); Supplier<Integer> s = r::nextInt; Stream<Integer> g = generate(s);
import java.util.function.Function;
class G<T> { T t; Function<T, T> f; G(T t, Function<T, T> f) { this.t = t; this.f = f; } T yield() { T c = t; t = f.apply(t); return c; } }
sub _upto (&) { return $_[0]; } # prototype & is for a function param sub upto { my ($start, $end) = @_; my $n = $start; return _upto { return wantarray ? $start .. $end : $n > $end ? ($n = $start, ()) : $n++ ; }; } my $it = upto(3, 5); foreach ( $it->() ) { print ' ' . $_ }
def g(): for i in range(6): yield i
g = (1..6).each
No security, no password. Other people might choose the same nickname.