Supponiamo che questa situazione: Ho una matrice di oggetti e voglio il metodo di istanza di chiamata su ciascuno di essi. Posso fare qualcosa di simile:Chiamare il metodo di istanza su ogni oggetto nell'array
//items is an array of objects with instanceMethod() available
items.forEach { $0.instanceMethod() }
La stessa situazione è con map
. Ad esempio voglio mappare ogni oggetto a qualcos'altro con mappingInstanceMethod
che restituisce valore:
let mappedItems = items.map { $0.mappingInstanceMethod() }
C'è un modo più pulito per farlo?
Per esempio in Java si può fare:
items.forEach(Item::instanceMethod);
invece di
items.forEach((item) -> { item.instanceMethod(); });
è la sintassi simile disponibile in Swift?
Se ho capito bene la tua domanda, allora si risponde qui: [? C'è un modo per fare riferimento funzione di esempio quando si chiama SequenceType.forEach] (http://stackoverflow.com/questions/34049116/ è-ci-a-way-to-riferimento-esempio-funzione-quando-chiamante SequenceType-foreach). - E la risposta breve è "no", non è possibile "semplicemente" chiamare 'items.forEach (Item.instanceMethod)' in Swift perché i parametri della funzione al curry sono nell'ordine sbagliato. –
... in altre parole: quello che stai facendo è già un modo pulito Swifty. –