Verschlüsse:
Die Verwendung von Variablen, die eine Funktion enthalten, im Vergleich zur Verwendung einer Funktion selbst kann helfen:
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)}
Kleiner Unterschied hier, aber es wird in einigen Rätseln mehr zeigen.
Kürzungsfunktionen:
Ein Blick auf das vorherige Beispiel erinnert mich an etwas. Wenn Sie eine Funktion oft genug verwenden, lohnt es sich manchmal, sie umzubenennen:
Dies:
String(repeating:$0,count:$1)
Dazu:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
Oder eigentlich ist das besser:
var r=String.init(repeating:count:)
Auf diese Weise rufen Sie einfach an r("Hello World",8)
anstattString(repeating:"Hello World",count:8)
Typdeklarationen weglassen:
Ich habe einmal einen Abschluss erstellt, ohne den Argumenttyp festzulegen, wodurch eine kürzere Antwort erstellt wurde:
var f={(i)->Int in i-1+i%2*2}
Der Compiler hat abgeleitet, dass i
in Int
.
Erstellen Sie Arrays auf schnelle Weise:
Wenn Sie ein Array von benötigen Ints
, verwenden Sie a Range
, um es zu erstellen:
Array(0...5)
Das macht dasselbe wie:
[0,1,2,3,4,5]
Arrays anstelle von If
oder Switch
:
Anstatt dies zu tun:
if n==0{return "a"}else if n==1{return "b"}else{return "c"}
Sie können dies wahrscheinlich tun:
return ["a","b","c"][n]
Typen kürzen:
Wenn Sie die Typkonvertierung häufig verwenden, möchten Sie möglicherweise einen Typalias erstellen:
typealias f=Float
Karte:
Denken Sie daran, dass Sie das return
Schlüsselwort in der map
Funktion häufig nicht verwenden müssen .
Swift Online ausführen:
Obwohl Try It Online Swift It jetzt nicht unterstützt !