Fermetures:
L'utilisation de variables qui détiennent une fonction par rapport à l'utilisation d'une fonction elle-même peut aider:
65 octets:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
66 octets:
func r(s:String,i:Int)->String{return String(repeating:s,count:i)}
Petite différence ici, mais cela apparaîtra plus dans certains puzzles.
Fonctions de raccourcissement:
Regarder l'exemple précédent me rappelle quelque chose. Parfois, si vous utilisez une fonction suffisamment de fois, cela vaut la peine de la renommer:
Cette:
String(repeating:$0,count:$1)
Pour ça:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
Ou, en fait, c'est mieux:
var r=String.init(repeating:count:)
De cette façon, vous appelez simplement r("Hello World",8)
au lieu deString(repeating:"Hello World",count:8)
Laissant de côté les déclarations de type:
Une fois, j'ai créé une fermeture sans définir le type d'argument, créant ainsi une réponse plus courte:
var f={(i)->Int in i-1+i%2*2}
Le compilateur déduit qui se i
trouve dansInt
.
Créez des tableaux rapidement:
Si vous avez besoin d'un tableau de Ints
, utilisez a Range
pour le créer:
Array(0...5)
Cela fait la même chose que:
[0,1,2,3,4,5]
Tableaux au lieu de If
ou Switch
:
Au lieu de faire ceci:
if n==0{return "a"}else if n==1{return "b"}else{return "c"}
Vous pouvez probablement faire ceci:
return ["a","b","c"][n]
Raccourcir les types:
Si vous utilisez beaucoup la conversion de type, vous souhaiterez peut-être créer un alias de type:
typealias f=Float
Carte:
N'oubliez pas que vous n'avez souvent pas besoin d'utiliser le return
mot - clé dans la map
fonction.
Exécuter Swift en ligne:
Bien que Try It Online ne prenne pas en charge Swift, il le fait maintenant !