molily: generatoren mit yield

Beitrag lesen

function gen() {

var i=0;
   while (i<10)
       yield i++;
}
var iter=gen();
for(var x=0; x<4; ++x) {
  alert(iter.next());
}
alert("send: "+iter.send(1));
for(var x=0; x<4; ++x) {
  alert(iter.next());
}


>   
> Hier erhalte ich jedes Mal 0, 1, 2, 3, send: 4, 5, 6, 7, 8 - egal, ob ich als Argument für send 1, 47 oder 376 verwende.  
  
Du machst mit dem Wert, den du an den Iterator sendest, ja auch nichts. Der Iterator muss ihn entgegennehmen:  
  
<script type="application/javascript;version=1.8">  
~~~javascript
function gen() {  
	var i=0;  
	while (i<10) {  
	var sentValue = yield i++;  
	if (typeof sentValue == 'number')  
		i = sentValue;  
	}  
}  
var iter=gen();  
for(var x=0; x<4; ++x) {  
	console.debug(iter.next());  
}  
console.debug('send', iter.send(5));  
for(var x=0; x<4; ++x) {  
	console.debug(iter.next());  
}

</script>

Mathias