nyílt végű függvényargumentum a géppel

szavazat
82

IMO, az egyik fő gond a géppel nyelv támogatása a meglévő vanília JavaScript kódot. Ez a benyomás volt első látásra. Vessen egy pillantást a következő JavaScript funkció, amely tökéletesen érvényes:

Megjegyzés: Nem azt mondom, hogy szeretem ezt a megközelítést. Csak azt mondom, hogy ez egy érvényes JavaScript kódot.

function sum(numbers) { 

    var agregatedNumber = 0; 
    for(var i = 0; i < arguments.length; i++) { 
        agregatedNumber += arguments[i];
    }

    return agregatedNumber;
}

Tehát, mi fogyasztunk ezt a funkciót bármennyi érvek:

console.log(sum(1, 5, 10, 15, 20));

Azonban, amikor megpróbálja ezt ki géppel Playground , ez ad fordításkor hibákat.

Én feltételezve, hogy ez egy bug. Tegyük fel, hogy nincs a kompatibilitási problémák. Aztán, van-e módja annak, hogy megírjam ezt a fajta funkciók nyílt végű érvek? Mint például paramsa szolgáltatás C #?

A kérdést 02/10/2012 20:52
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
195

A géppel módja ennek az, hogy helyezze az ellipszis operátor ( ...) neve előtt az érvelés. A fenti lenne írva, mint,

function sum(...numbers: number[]) {
    var aggregateNumber = 0;
    for (var i = 0; i < numbers.length; i++)
        aggregateNumber += numbers[i];
    return aggregateNumber;
}

Ez majd írja ellenőrizze helyesen

console.log(sum(1, 5, 10, 15, 20));
Válaszolt 02/10/2012 20:57
a forrás felhasználó

szavazat
2

Amellett, hogy @chuckj válasz: Ön is használja a lambda kifejezés géppel

function sum(...nums: number[]): number {
    return nums.reduce((a, b) => a + b, 0);
}
Válaszolt 19/03/2017 09:37
a forrás felhasználó

szavazat
0

Géppel ez a fogalom a Rest paraméter , ez a paraméter, amely megkapja több értéket a hasonló type.If célozzuk a géppel, akkor meg kell írni a kódot ECMAScript 6 szabvány, majd géppel transpiler átalakítja azt az annak megfelelő java script kód ( amely ECMAScript 5 standard) .Ha használjuk géppel akkor azt kell használni a három pont (...) preferx a restparameter változó neve, például függvény összege (... számok: szám []), akkor működni fog.

Megjegyzés: Rest Paraméter kell lennie az utolsó paraméter a paraméter list.likewise függvény összege (név: string, életkor: szám, ... számok: szám []).

Válaszolt 10/05/2018 06:56
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more