Zamknięcia:
Zastosowanie zmiennych, które przechowują funkcję w porównaniu z użyciem samej funkcji, może pomóc:
65 bajtów:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
66 bajtów:
func r(s:String,i:Int)->String{return String(repeating:s,count:i)}
Mała różnica tutaj, ale pokaże więcej w niektórych łamigłówkach.
Funkcje skracania:
Spojrzenie na poprzedni przykład przypomina mi coś. Czasami, jeśli będziesz używać funkcji wystarczająco dużo razy, warto zmienić jej nazwę:
To:
String(repeating:$0,count:$1)
Do tego:
var r:(String,Int)->String={return String(repeating:$0,count:$1)}
W rzeczywistości jest to lepsze:
var r=String.init(repeating:count:)
W ten sposób po prostu dzwonisz r("Hello World",8)
zamiastString(repeating:"Hello World",count:8)
Deklaracje typu „Leaving Out”:
Kiedyś utworzyłem zamknięcie bez ustawiania typu argumentu, tworząc krótszą odpowiedź:
var f={(i)->Int in i-1+i%2*2}
Kompilator wywnioskował, że i
jest w Int
.
Twórz tablice w szybki sposób:
Jeśli potrzebujesz tablicy Ints
, użyj a, Range
aby ją utworzyć:
Array(0...5)
To robi to samo, co:
[0,1,2,3,4,5]
Tablice zamiast If
lub Switch
:
Zamiast tego:
if n==0{return "a"}else if n==1{return "b"}else{return "c"}
Prawdopodobnie możesz to zrobić:
return ["a","b","c"][n]
Skróć typy:
Jeśli często korzystasz z konwersji typów, możesz utworzyć alias typu:
typealias f=Float
Mapa:
Pamiętaj, że często nie musisz używać return
słowa kluczowego w map
funkcji.
Uruchamianie Swift Online:
Chociaż Try It Online nie obsługuje teraz Swift It !