Das heißt, wie drücke ich aus
function *(next) {}
mit Pfeil-Syntax? Ich habe alle Kombinationen ausprobiert, die mir einfielen, und ich konnte keine Dokumentation dazu finden.
(Ich benutze derzeit Node.js v0.11.14.)
Das heißt, wie drücke ich aus
function *(next) {}
mit Pfeil-Syntax? Ich habe alle Kombinationen ausprobiert, die mir einfielen, und ich konnte keine Dokumentation dazu finden.
(Ich benutze derzeit Node.js v0.11.14.)
Sie können es, aber nicht wirklich auf nette Weise. Es ist nicht kürzer und sieht nicht so hübsch aus. Überprüfen Sie das:
function* iterable(arg) {
yield* [];
}
async function* asyncIterable(arg) {
yield* [];
}
const arrowIterable = arg => {
return {
*[Symbol.iterator]() {
yield* [];
},
};
};
const arrowAsyncIterable = arg => {
return {
async *[Symbol.asyncIterator]() {
yield* [];
},
};
};
Dies funktioniert, weil ein Iterable im Grunde ein Objekt mit dem Symbol.iterator
oder Symbol.asyncIterator
ist, das auf einen Iterator gesetzt ist. Ein Generator ist ein Iterator!
Viel Spaß!
Ich weiß, dass das sehr spät ist, aber ein weiterer möglicher Grund könnte Syntax sein. Vielleicht funktioniert (*() => {})
, aber was ist mit (9 ** () => {})
? Ist das 9 hoch eine Pfeilfunktion, die NaN
zurückgibt, oder ist es 9 mal eine Generator-Pfeilfunktion, die auch NaN
zurückgibt? Es könnte mit einigen alternativen Syntax wie =>*
wie von einer anderen Antwort hier erwähnt, gemacht werden, aber vielleicht gab es den Wunsch, die Konsistenz der Generatorfunktionssyntax (z. B. function* () {}
und { *genMethod() {} }
) zu erhalten, als sie implementiert wurde. Nicht wirklich eine Entschuldigung, aber ein Grund dafür.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.