Encerramentos:
O uso de variáveis como manter uma função vs. usar uma função em si pode ajudar:
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)}
Pequena diferença aqui, mas mostrará mais em alguns quebra-cabeças.
Funções de encurtamento:
Observar o exemplo anterior me lembra algo. Às vezes, se você estiver usando uma função vezes suficientes, vale a pena renomeá-la:
Este:
String(repeating:$0,count:$1)
Para isso:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
Ou, na verdade, isso é melhor:
var r=String.init(repeating:count:)
Dessa forma, você acabou de ligar r("Hello World",8)
vez deString(repeating:"Hello World",count:8)
Deixando de fora as declarações de tipo:
Certa vez, criei um fechamento sem definir o tipo de argumento, criando assim uma resposta mais curta:
var f={(i)->Int in i-1+i%2*2}
O compilador inferiu que i
está emInt
.
Crie matrizes da maneira rápida:
Se você precisar de uma matriz de Ints
, use a Range
para criá-la:
Array(0...5)
Isso faz o mesmo que:
[0,1,2,3,4,5]
Matrizes em vez de If
ouSwitch
:
Em vez de fazer isso:
if n==0{return "a"}else if n==1{return "b"}else{return "c"}
Você provavelmente pode fazer isso:
return ["a","b","c"][n]
Encurtar tipos:
Se você estiver usando muito a conversão de tipos, convém criar um alias de tipo:
typealias f=Float
Mapa:
Lembre-se de que muitas vezes você não precisa usar a return
palavra - chave nomap
função.
Executando o Swift Online:
Embora o Try It Online não suporte o Swift It agora !