2017-07-13 1 views
0

J'apprends rapidement à partir d'Apple iBook quand je passais en revue les fermetures (page 128), il y a un exemple de retour implicite quand j'ai exécuté cet exemple dans ma PG qui en montrait erreurRetours implicites à partir de fermetures à simple expression swift 3.1

Playground execution failed: error: 12.playground:248:45: error: expected ',' separator let sorted = returnss.sorted(by: { (s1, s2 in return s1 < s2 })

Je l'ai vérifié deux fois. Voici mon programme:

var listForShort: [Int] = [4, 65, 343, 22, 5445, 343] 

let sorted = listForShort.sorted(by: { (s1, s2 in s1 < s2 }) 

for sort in sorted { 
    print(sort) 
} 

Version rapide 3.1

+2

Il n'y a pas assez de parenthèse fermante dans cette déclaration –

Répondre

0

faire comme ce

let sorted2 = listForShort.sorted(by: { s1, s2 in s1 > s2 }) 

Retirez les supports supplémentaires

+0

oui, il travaille maintenant –

0

Il vous manque un crochet de fermeture:

listForShort.sorted(by: { (s1, s2) in s1 < s2 }) 

T voici une syntaxe plus agréable, vous voudrez peut-être à la caisse:

listForShort.sorted { $0 < $1 } 
+1

'{$ 0 <$ 1}' a le même type que '<', vous peut simplement utiliser '.sorted (by: <)'. En outre, il s'agit du comportement par défaut, vous pouvez donc simplement appeler '.sorted()'. – Alexander