chiusure:
L'uso di variabili che contengono una funzione rispetto all'utilizzo di una funzione stessa può aiutare:
65 byte:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
66 byte:
func r(s:String,i:Int)->String{return String(repeating:s,count:i)}
Piccola differenza qui, ma mostrerà di più in alcuni enigmi.
Funzioni di accorciamento:
Guardare l'esempio precedente mi ricorda qualcosa. A volte, se utilizzerai una funzione abbastanza volte, vale la pena lo spazio per rinominarla:
Questo:
String(repeating:$0,count:$1)
A questa:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
O, in realtà, questo è meglio:
var r=String.init(repeating:count:)
In questo modo basta chiamare r("Hello World",8)
invece diString(repeating:"Hello World",count:8)
Tralasciando le dichiarazioni di tipo:
Una volta ho creato una chiusura senza impostare il tipo di argomento, creando così una risposta più breve:
var f={(i)->Int in i-1+i%2*2}
Il compilatore ha dedotto che i
è dentro Int
.
Crea array in modo rapido:
Se hai bisogno di un array di Ints
, usa a Range
per crearlo:
Array(0...5)
Questo fa la stessa cosa di:
[0,1,2,3,4,5]
Matrici Invece di If
o Switch
:
Invece di fare questo:
if n==0{return "a"}else if n==1{return "b"}else{return "c"}
Probabilmente puoi farlo:
return ["a","b","c"][n]
Accorciare i tipi:
Se stai usando molto la conversione di tipo, potresti voler creare un alias di tipo:
typealias f=Float
Carta geografica:
Ricorda che spesso non è necessario utilizzare la return
parola chiave nella map
funzione.
Esecuzione di Swift Online:
Anche se Provalo online non supporta Swift It adesso !