A generator is a entity that you can call at any time to request the next value in some sequence. For simplicity, this post will focus on a particular generator: one for Fibonacci numbers.
Generators as objects
In an object-oriented language, one can create a specific generator with a property holding state and a method to return the next value. In JavaScript:
var fibonacciGenerator = { a: 0, b: 1, next: function () { var result = this.b; this.b += this.a; return this.a = result; } };
Normally, you want to protect the generator state from tampering. One way to do this is to use a module that supports private variables. In Ruby:
Similarly, in a classical (as opposed to prototypal) OO language, you can make a class for your generator. Then different instances can be constructed, possibly with different starting points or different rules. Again in Ruby:
No comments:
Post a Comment