Cierres:
El uso de variables que sostienen una función vs. el uso de una función en sí misma puede ayudar:
65 bytes:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
66 bytes:
func r(s:String,i:Int)->String{return String(repeating:s,count:i)}
Pequeña diferencia aquí, pero mostrará más en algunos rompecabezas.
Funciones de acortamiento:
Mirar el ejemplo anterior me recuerda algo. A veces, si va a utilizar una función suficientes veces, vale la pena cambiarle el nombre:
Esta:
String(repeating:$0,count:$1)
A esto:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
O, en realidad, esto es mejor:
var r=String.init(repeating:count:)
De esa manera solo llamas en r("Hello World",8)
lugar deString(repeating:"Hello World",count:8)
Dejando de lado las declaraciones de tipo:
Una vez creé un cierre sin establecer el tipo de argumento, creando así una respuesta más corta:
var f={(i)->Int in i-1+i%2*2}
El compilador dedujo que i
está enInt
.
Cree matrices de manera rápida:
Si necesita una matriz de Ints
, use a Range
para crearla:
Array(0...5)
Esto hace lo mismo que:
[0,1,2,3,4,5]
Matrices en lugar de If
oSwitch
:
En lugar de hacer esto:
if n==0{return "a"}else if n==1{return "b"}else{return "c"}
Probablemente puedas hacer esto:
return ["a","b","c"][n]
Acortar tipos:
Si usa mucho la conversión de tipos, es posible que desee crear un alias de tipo:
typealias f=Float
Mapa:
Recuerde que a menudo no necesita usar la return
palabra clave enmap
función.
Ejecutando Swift Online:
¡Aunque Try It Online no es compatible con Swift It ahora !