İçeriğe geç

Swift 4.1 ile gelen yenilikler

Merhabalar bu yazımda kısa süre önce betadan çıkıp kararlı sürüme kavuşan Swift 4.1 ile gelen bazı değişim ve yeniliklerden bahsedeceğim.

Swift dilide günler ilerledikçe gelişmekte ve yeni sürümleri ile programlama yapısını daha efektif, temiz ve hızlı hale getirmekte. Bu biz geliştiriciler için çok yararlı bir durum. Bu gelişmeler ile birlikte haziran ayı içerisinde gerçekleşecek WWDC 18 etkinliğinde dilin yeniliklerle dolu yeni sürümü Swift 5 ve iOS 12 ‘de görücüye çıkmış olacak.

Aşağıda örneklerine yer verdiğim bazı gelişmeleri görebilirsiniz.

Bunlardan ilki flatMap yerini compactMap fonksiyonuna bıraktı. Böylelikle kolay bir şekilde string dizi içerisinden Int nesneleri ayrıştırabiliriz.

let objArr = ["A","B","1","2","3","4","C"]
let numbers = objArr.compactMap {Int($0)}
numbers // 1,2,3,4

Diğer bir yenilikte protocol içerisinde tekrar aynı protocol nesnesini recursive olarak kullanabilmekteyiz. Buda bize ilişkili sınıflar ve alt sınıflarda kodun daha okunaklı ve işlevsel olmasını kolaylaştırmakta.

protocol Employee {
    associatedtype Manager: Employee
    var manager: Manager? { get set }
}

class BoardMember: Employee {
    var manager: BoardMember?
}

class SeniorDeveloper: Employee {
    var manager: BoardMember?
}

class JuniorDeveloper: Employee {
    var manager: SeniorDeveloper?
}

Bunun yanı sıra diğer bir protocol yeniliklerinden getirilen şartlı uyumlar. Belirtilen protocol eklenmiş ise geçerli olup çalıştırılabilen methodlar oldu.

protocol Purchaseable {
    func buy()
}

struct Items: Purchaseable {
    func buy() {
        print("Bought item!")
    }
}

extension Array: Purchaseable where Element: Purchaseable {
    func buy() {
        for item in self {
            item.buy()
        }
    }
}

let items = [Items(),Items(),Items()]
items.buy()

Diğer bir yenilikte Equatable protocolunun ortak bir şekilde tüm yapılarda daha okunaklı eşitleme işlemi gerçekleştirmesi.

struct User:Equatable {
    var nick: String
    var city: String
    var age: Int
    var gender: String

    static func ==(lhs: User, rhs: User) -> Bool {
        return lhs.nick == rhs.nick
    }
}

let usr = User(nick: "uikenan", city: "San Francisco", age: 23, gender: "Male")
let usr_2 = User(nick: "abcde", city: "İstanbul", age: 37, gender: "Male")

usr == usr_2 // false

Diğer güzel bir eklemede simulator ve cihaza göre kod bloğu yazabilir hale gelmemiz.

#if targetEnvironment(simulator)
   // code simulator
#else
   // code device
#endif

 

 

 

Kategori:SwiftSwift 4

Bu yazı yorumlara kapalı.

Copyright © 2022 Kenan Atmaca