+2

What’s new in Swift 4?

I. Giới thiệu

Apple đã phát hành Swift 4.0 và bạn có thể download chúng tại link đây. Và trong bài viết này tôi sẽ giới thiệu với các bạn một số tính năng được thêm vào trong swift 4.0.

Installing swift-4.0 Snapshot Toolchain

  1. Tải xcode section cho swift 4.0 tại https://swift.org/download/#snapshots
  2. Sau khi install swift-4.0 toolchain vào Xcode -> Toolchain và chọn swift 4.0 snapshot. Sau đó restart lại Xcode.

String will be treated as collection -- SE-0163

Vẫn giống như swift 1.x, String được coi như là một colllection. Swift 4.0 bạn không cần phải viết string.characters.xxx mà chỉ cần string.xxx

let message = "Message!"
message.count // no need of message.characters.count
for character in message {  // no need of message.characters
    print(character)
}

và output sẽ như sau:

8
M
e
s
s
a
g
e
!

MutableCollection.SwapAt - SE-0173

Swap func trong collection

var names = [“Vipul”,”Vinay”,”Vishal”,”Akshay”]
names.swapAt(2,3)

và Output:

[“Vipul”, “Vinay”, “Akshay”, “Vishal”]

One-sided Ranges— SE-0172

Tính năng được lấy cảm hứng từ Python, và nó thật tuyệt vời. Bây giờ cũng ta có thể sử dụng 1 bên của Ranges

let names = [“Vipul”, “Vishal”, “Vinay”, “Vikas”, “Vineet”]
let firstTwoString = names[..<2]
let lastThreeString = names[2…]
print(firstTwoString)
print(lastThreeString)

Ouput:

["Vipul", "Vishal"] // [..<2] => [0,1]
["Vinay", "Vikas", "Vineet"] // names[2…] => [2,3,4]

Swift Archival & Serialization —  SE-0166

Một điều tuyệt vời mà swift 4 đem lại là chúng ta có thể parse JSON 1 cách dễ dàng mà không cần dùng đến thư viện bên ngoài.

Define Models

struct Address:Codable {
  var street:String
  var zip:String
  var city:String
  var state:String
}
struct Person: Codable {
  var name: String
  var address: Address
}

let address = Address(street: “Apple Bay Street”, zip: “94608”, city: “Emeryville”, state: “California”)
let person = Person(name: “Steve Jobs”, address: address)

Encoding ( Model -> JSON )

let encoder = JSONEncoder() // Define JSONEncoder
if let encoded = try? encoder.encode(person) {
  if let json = String(data: encoded, encoding: .utf8) {
    print(json)
  }
}

Output:

{“name”:”Steve Jobs”,”address”:{“state”:”California”,”street”:”Apple Bay Street”,”zip”:”94608",”city”:”Emeryville”}}

Decoding ( JSON -> Model )

let decoder = JSONDecoder()
if let decoded = try? decoder.decode(Person.self, from: encoded) {
  print(decoded.name)
  print(decoded.address)
}

Output:

Steve Jobs
Address(street: “Apple Bay Street”, zip: “94608”, city: “Emeryville”, state: “California”)

Tổng kết

Ở trên, tôi đã giới thiệu một vài tính năng được thêm vào trong swift 4.0 và swift 4.0 sẽ có thêm nhiều tính năng thú vị khác chúng cùng khám phá khi bản chính thức đầu tiên được dự kiến phát hành đầu tháng 6 trong sự kiện Apple WWDC 2017. Chúng ta cùng chờ đợi 😃)) Nguồn:

  1. https://swift.org/blog/swift-4-0-release-process/
  2. https://github.com/ole/whats-new-in-swift-4
  3. https://blog.mindorks.com/whats-new-in-swift-4-4c78766efa6e

All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.