Ciao, nel tuo codice noto qualche problema:
Nota inoltre che puoi sfruttare l'inferenza del tipo dei parametri della closure e la sintassi della "trailing closure" per scrivere una closure molto più compatta. Ad esempio:
funzioneStandard(12, msg: "test") { variabile in
let s = variabile as! String
return s.characters.count % 2 == 0
}
(nota che s.characters.count è l'equivalente in Swift 2.0 della funzione count() di Swift 1.x).
In particolare la "trailing closure" fa sì che se la closure è l'ultimo parametro della funzione allora puoi scrivere la closure tra parentesi graffe
al di fuori della funzione stessa, ovvero:
nomeFunzione(parametro1, parametro2) { closure }
L'inferenza del tipo, invece, fa sì che tu possa omettere il tipo dei parametri della closure (perché è possibile ottenerne il tipo dalla signature di "funzioneStandard"). In questo modo l'istruzione
funzioneStandard(4, "test") { (variabile: AnyObject) in <corpo>}
diventa
funzioneStandard(4, "test") { variabile in <corpo> }