/ / липсващ етикет на аргумента 'комбинирай:' в извикване - масиви, бързо

липсващ етикет с аргументи "комбинирай:" в масиви, бързо

Получаване на грешката, показана по-долу:

var products = [
("Kayak", "A boat for one person", "Watersports", 275.0, 10),
("Lifejacket", "Protective and fashionable", "Watersports", 48.95, 14)]

let stockTotal = products.reduce(0,{(total, product) -> Int in return total + product.4}); //missing argument label "combine:" in call

Във всички примери, които видях за намаляване, етикетът за комбиниране не се използва:

let numbers = Array(1...10)
.reduce("numbers: ") {(total, number) in total + "(number) "}

И така, какво правя грешно?

Отговори:

4 за отговор № 1

Можете да пропуснете етикета, ако използвате затваряне:

var products = [
("Kayak", "A boat for one person", "Watersports", 275.0, 10),
("Lifejacket", "Protective and fashionable", "Watersports", 48.95, 14)
]

let stockTotal = products.reduce(0) { $0 + $1.4 }

При затварящо затваряне затварящото устройство се подава към функцията след окончателното затваряне ), Ако не искате да използвате затваряне, трябва да добавите етикета на аргумента:

let stockTotal2 = products.reduce(0, combine: { $0 + $1.4 })

0 за отговор № 2

Използвайте синтаксиса за затваряне след края:

let stockTotal = products.reduce(0) {(total, product) -> Int in return total + product.4}