View source code
Display the source code in std/concurrency.d from which this page was generated on
github.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Page wiki
View or edit the community-maintained wiki page associated with this page.
Class std.concurrency.Generator
A Generator
is a Fiber that periodically returns values of type T to the
caller via yield
. This is represented as an InputRange.
Inherits from
-
(base class)Object
Constructors
Name | Description |
---|---|
this
|
Initializes a generator object which is associated with a static
D function. The function will be called once to prepare the range
for iteration.
|
this
|
Initializes a generator object which is associated with a static
D function. The function will be called once to prepare the range
for iteration.
|
this
|
Initializes a generator object which is associated with a dynamic
D function. The function will be called once to prepare the range
for iteration.
|
this
|
Initializes a generator object which is associated with a dynamic
D function. The function will be called once to prepare the range
for iteration.
|
Properties
Name | Type | Description |
---|---|---|
empty
[get]
|
bool |
Returns true if the generator is empty .
|
front
[get]
|
T |
Returns the most recently generated value. |
Methods
Name | Description |
---|---|
popFront
|
Obtains the next value from the underlying function. |
factory
|
Create instance of class specified by the fully qualified name
classname .
The class must either have no constructors or have
a default constructor.
|
opCmp
|
Compare with another Object obj.
|
opEquals
|
Returns !=0 if this object does have the same contents as obj.
|
toHash
|
Compute hash function for Object .
|
toString
|
Convert Object to a human readable string.
|
Example
import std.concurrency; import std.stdio; void main() { auto tid = spawn( { while (true) { writeln(receiveOnly!int()); } }); auto r = new Generator!int( { foreach (i; 1 .. 10) yield(i); }); foreach (e; r) { tid.send(e); } }
Authors
Sean Kelly, Alex Rønne Petersen, Martin Nowak