Kapaklar:
Değişkenlerin kullanımı, bir işlevi tutma yerine, bir işlevi kullanma yardımcı olabilir:
65 bayt:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
66 bayt:
func r(s:String,i:Int)->String{return String(repeating:s,count:i)}
Buradaki küçük fark, ancak bazı bulmacalarda daha fazla gösterilecektir.
Kısaltma İşlevleri:
Önceki örneğe bakmak bana bir şey hatırlatıyor. Bazen, bir işlevi yeterince kullanacaksanız, yeniden adlandırmak için boşluğa değer olabilir:
Bu:
String(repeating:$0,count:$1)
Buna:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
Veya, aslında, bu daha iyidir:
var r=String.init(repeating:count:)
Bu şekilde r("Hello World",8)
yerine sadece araString(repeating:"Hello World",count:8)
Dışarı Çıkma Tip Beyanları:
Bir zamanlar argüman tipini ayarlamadan bir kapanış oluşturdum, böylece daha kısa bir cevap oluşturdum:
var f={(i)->Int in i-1+i%2*2}
Derleyici olduğu sonucu çıkarılan i
içindedir Int
.
Hızlı Yol Dizileri Yaratın:
Bir diziye ihtiyacınız varsa Ints
, Range
oluşturmak için a kullanın:
Array(0...5)
Bu aynı şeyi yapar:
[0,1,2,3,4,5]
Dizileri If
veya YerineSwitch
:
Bunu yapmak yerine:
if n==0{return "a"}else if n==1{return "b"}else{return "c"}
Muhtemelen bunu yapabilirsin:
return ["a","b","c"][n]
Kısaltılmış Türleri:
Tür dönüştürmeyi çok kullanıyorsanız, bir tür diğer adı oluşturmak isteyebilirsiniz:
typealias f=Float
Harita:
return
Anahtar kelimeyi anahtar kelimede sık kullanmanız gerekmediğini unutmayın .map
.
Swift Online Koşu:
Her ne kadar Çevrimiçi Deneyin , Swift'i şimdi desteklemiyor olsa da !