molily: generatoren mit yield

Beitrag lesen

yield hat also einen „Rückgabewert“, aber nur in dem Fall, wenn ich von außen etwas sende - andernfalls ist sentValue nur undefined.

Erscheint mir irgendwie umständlich und unschön. Frage mich, was dagegen sprach, beim send-en gleich den Wert der ge-yield-eten Variablen auf den Wert zu setzen?

Dass es keine einzelne Variable gibt, die dafür gedacht ist.

send übergibt einfach einen Wert an den Iterator, welcher das Ergebnis des yield-Ausdrucks ist.

Und yield [wert] übergibt ebenfalls nur einen Wert, welcher dann das Ergebnis des Ausdrucks iterator.next() ist. yield übergibt keine Variable. Man kann auch yield 'foo' schreiben.

(Vermutlich sind in beiden Fällen mittels Destructuring Assignment auch mehrere Werte möglich.)

Was der Iterator mit diesem Wert macht, ist natürlich seine Sache. Er kann den Wert einer Variablen zuzuweisen oder sonst irgendetwas damit machen.

Im Grunde ist next und yield ein Ping-Pong zwischen zwei Anweisungsblöcken, dabei können sie sich Werte hin- und zurückgeben. Was die jeweils mit den übergebenen Werten tun, ist Sache des Programmierers.

Mathias