Ich habe ein Problem mit dem Verständnis der Semantik von "Return" in einem Generator. Ich habe es als den letzten, also letzten Wert verstanden.Semantik des Rückgabewerts eines Generators
function* gen() {
yield "foo";
return "bar";
}
for (const x of gen()) {
console.log(x);
}
In diesem Beispiel wird nur "foo" und nicht "bar" gedruckt.
EDIT:
Gibt es einen Weg, um den Rückgabewert der „done = true“ Iterator mit der „für“ Syntax zu bekommen, oder ist es immer verloren?
Könnte man 'yield Ausbeute * gen()' nicht tun? –
@JonasW. Das könnte man, aber ich würde es nicht empfehlen. Der Rückgabewert ist in der Regel sehr verschieden von den gelieferten, er ist * nicht * Teil der Sammlung. Wenn der Autor von Gen es nicht dort hingelegt hat, hatte er wahrscheinlich einen guten Grund dafür. Ich habe die Antwort mit einem besseren Beispiel aktualisiert. – Bergi
Ich glaube nicht, dass das eine richtige Programmierung ist ... Das ist nur ein Hack. Sie sollten dies in keinem Algorithmus in einer geeigneten Sprache benötigen. – Redu