Dato questo semplice funzione di accattivarsi:Perché le funzioni al curry richiedono nomi di parametri esterni?
func foo(x:Int)(y:Int)->String{
return "\(x) with \(y)"
}
mi aspetto di essere in grado di fare qualcosa del genere:
let bar = foo(1)
bar(2) //<- error: Missing argument label 'y:' in call
Se l'etichetta della chiamata a bar
(come in bar(y:2)
) tutto funziona bene . Ma non capisco perché il nome del parametro sia necessario. C'è un modo per evitarlo?
la cosa più ovvia:
func foo(x:Int)(_ y:Int)->String ...
non sembra funzionare.
Nice! Il problema esiste sia per un func di primo livello che per un metodo di classe – GoZoner
Sì, anche l'esempio di currying nel libro Swift lo mostra (incollalo, elimina la seconda funzione di manuale "manuale", e tu ottieni "label argomento mancante" b: "in chiamata") –
Riportalo come rdar: // 17359591. Per favore, sentiti libero di ingannare. – jemmons