Co nowego w Swift 2.2?

Swift 2.2 jest pierwszym oficjalnym wydaniem tego języka programowania od momentu, kiedy zaczął on funkcjonować jako open source. Z jednej strony na użytkowników czeka kilka ciekawych nowości. Z drugiej natomiast, twórcy postanowili wycofać się z niektórych rozwiązań. Poniżej przedstawiamy najważniejsze zmiany.
Tym razem zdecydowano się na wprowadzenie poprawek, których autorami jest 212 współtwórców, niezwiązanych z Apple. Swift 2.2 ma być przejściowym etapem przed wydaniem wersji 3.0.
Selektory
Do tej pory, jako selector mogliśmy podać nazwę metody w postaci stringu. W Swift 2.2 nie ma już takiej możliwości. Wprowadzona została natomiast nowa konstrukcja #selector, która w czasie kompilacji sprawdza czy podana metoda istnieje.
func noMoreStringSelector() {
}
func selectorTest() {
let button = UIButton()
// Swift 2.2
button.addTarget(nil, action: #selector(noMoreStringSelector), forControlEvents: .AllEvents)
// Before Swift 2.2
button.addTarget(nil, action: "noMoreStringSelector", forControlEvents: .AllEvents)
}
Weryfikacja wersji
Twórcy zdecydowali się również na wprowadzenie nowej, ciekawej konstrukcji, umożliwiającej sprawdzenie wersji Swifta. Rozwiązanie z pewnością docenią autorzy bibliotek, które muszą wspierać kilka jego wersji.
#if swift(>=3.0)
print("Swift 3.0 or later")
#else
print("Swift 2.2 or earlier")
#endif
Wycofanie pętli for w stylu C
Do tej pory mogliśmy korzystać ze standardowej konstrukcji pętli for w stylu C. Wraz z nową wersją Swifta zdecydowano się jednak na wycofanie z tej opcji.
//Standard C-style for loop
for var i = 1; i <= 10; i+=1 {
print(i)
}
//Modern Swift for loop, which may be used instead of
for i in 1...10 {
print(i)
}
Wycofanie operatorów ++ oraz —
W pierwszej chwili decyzja ta może nas nieco zaskoczyć. Wycofanie tych operatorów jest pewną konsekwencją likwidacji pętli for w stylu C-, gdzie głównie były one wykorzystywane. Oczywiście jeśli nadal potrzebujemy inkrementacji możemy w zastępstwie użyć konstrukcji +=1.
var i = 0
i++ //Warning, XCode offers to use:
i += 1
Poniższy kod przestanie działać wraz z wersją 3.0:
i++
i--
++i
--i
i = i++
Porównywanie krotek
Swift 2.2 daje nam możliwość porównywania krotek, zawierających do 6 elementów. Jest to prosta, ale przydatna funkcjonalność.
let firstTuple = (1, 2, 3, "string")
let secondTuple = (1, 2, 3, "string")
if firstTuple == secondTuple {
print("Tuples are equal")
}
Więcej słów kluczowych jako etykiety argumentów funkcji
Dotąd mogliśmy wykorzystywać słowa kluczowe jako etykiety argumentów tylko, jeśli zapisaliśmy je w ten sposób (w przykładzie użyto słowo kluczowe repeat):
func printName(name: String, `repeat` repeatCount: Int) {
for _ in 0 ..< repeatCount {
print(name)
}
}
Obecnie już nie jest to konieczne:
func printName(name: String, repeat repeatCount: Int) {
for _ in 0 ..< repeatCount {
print(name)
}
}
printName("Holdapp", repeat: 5)
Dodanie removeFirst()
Pewne problemy mogło nam sprawiać usuwanie pierwszego elementu tablicy. W Swift 2.2, dzięki metodzie removeFirst(), możemy usunąć jeden lub kilka pierwszych elementów.
var elements = [1, 2, 3, 4, 5, 6]
elements.removeFirst()
print(elements) // [2, 3, 4, 5, 6]
elements.removeFirst(3)
print(elements) // [5, 6]
Większość nowości wprowadzonych w Swift 2.2 z pewnością przypadnie do gustu użytkownikom. Nie brakuje oczywiście zmian budzących pewne kontrowersje, jednak trzeba przyznać, że ich wdrożenie jest w pełni uzasadnione. Swift rozwija się niezwykle dynamicznie, dlatego każdy, kto chce być na bieżąco z tym językiem programowania, powinien regularnie śledzić Swift Evolution oraz oficjalny Changelog.