Swift 4里的新东西

作者: 豆志昂扬 | 来源:发表于2017-06-26 00:10 被阅读85次
  • �Swift 4中新支持对象和JSON格式之间的序列化和反序列,Swift社区还是听取了广大开发者们的声音,再也不用使用如ObjectMapper的第三方类库。更多阅读
let farm = Farm(name: "Old MacDonald's Farm",
                location: Location(latitude: 51.621648, longitude: 0.269273),
                animals: [.chicken, .dog, .cow, .turkey, .dog, .chicken, .cow, .turkey, .dog])
let payload: Data = try JSONEncoder().encode(farm)
do {
    let farm = try JSONDecoder().decode(Farm.self, from: payload)
    
    let coordinates = "\(farm.location.latitude, farm.location.longitude)"
} catch {
    // 处理反序列化错误
}
  • 支持多行字符串。在Swift 3要实现类似功能只能通过手动拼接,影响性能,且格式丑陋。这种小而美的功能Swift 4社区早该支持了。�更多阅读
let star = "刘国梁"
let introString = """ 
马龙、
张继科、
樊振东、
许昕等
退赛为了支持自己的主教练: \(star) 
"""
  1. �新增针对 key-value 的keyPath编码的支持,从Objective-C过来的开发者对KeyPath应该不会感到陌生。 更多阅读
class Person {
    var name: String
    var friends: [Person] = []
    var bestFriend: Person? = nil
    init(name: String) {
        self.name = name
    }
}
var han = Person(name: "Han Solo")
var luke = Person(name: "Luke Skywalker")
luke.friends.append(han)
// �创建keyPath
let firstFriendsNameKeyPath = \Person.friends[0].name
let firstFriend = luke[keyPath: firstFriendsNameKeyPath] // "Han Solo"
// 等价于
luke[keyPath: \.friends[0].name] // "Han Solo"
  • String是一个结构对象, 如Map、Filter和Reduce等针对结构对象的经典操作也能用到字符串上,让开发者更愉快的玩耍是Swift社区一直的追求。另外新版本中针对字符串操作性能做了优化,有兴趣的可以了解下copy-on-write. 更多阅读
// map
let abc: String = "abc"
_ = abc.map {
    print($0.description)
}
// filter
let filtered = abca.filter { $0 == "a" }
// reduce
let result = abc.reduce("1") { (result, c) -> String in
    return result + String(c)
}
  • �新增类Python设计中的单边区间设计。 更多阅读
let s = "Hello, World!"
let i = s.index(of: ",")!
//改善前
let greeting = s[s.startIndex..<i]
//改善后
let greeting = s[..<i]
let withComma = s[...i]
let location = s[i...]
  • private关键词作用域的变更。恰恰这回到了Swift中2.0中的设计,private作用域以文件为单位,�而fileprivate�将会被废弃。更多阅读
//以下代码在Swift 4中将有编译错误。
struct Foo {
    private func bar() {}
}
extension Foo {
    private func bar() {}
}
  • 类和协议的组合类型。这是一个让人意外的设计,看起来让人着迷。 更多阅读
    下面的例子来自WWDC中的分享:
// [UIControl & Shakeable]这种写法是不是很美?
protocol Shakeable{
    func shake()
}
extension UIButton:Shakeable{ /* ... */ }
extension UISlider:Shakeable{ /* ... */ }
func shakeEm(controls: [UIControl & Shakeable]) {
    for control in controls where control.state.isEnabled {
        control.shake()
    }

Swift 4更新中还包括了对内存的互斥访问,编译优化,@objc推断等。 总体来看,Swift 还是一门较为年轻的语言,希望未来在服务器开发,人工智能领域能有更大的发展机会。

推荐阅读
Uber 和 Swift重写项目的故事

更多

请关注豆志昂扬微信公众号获取更多内容:

  • 直接添加公众号豆志昂扬
  • 微信扫描下图二维码;

相关文章

  • 真刀真枪 面向协议编程

    基于 Swift 的面向协议编程 当 Swift 刚刚出现的时候,学习新东西都是令人兴奋的。第一年,我很高兴能学习...

  • Swift 4里的新东西

    �Swift 4中新支持对象和JSON格式之间的序列化和反序列,Swift社区还是听取了广大开发者们的声音,再也不...

  • iOS开发__Swift和OC混编

    WWDC过去已经过去有半个月了,说实话每年看老屁眼的新东西出来总会很有期待(PS:楼主不是gay),这不Swift...

  • RxSwift学习(一) -- RxSwift初探

    一、关于Swift 苹果公司有两种开发语言,大儿子Objective-C,这几年已经很久没更新过新东西了,小儿子S...

  • use_frameworks!遇到了library not fo

    最近项目要添加新功能了,真是懒的写,可是既然要写,就要从中学到点新东西。Swift已经发布了两年了,我居然还没用过...

  • use_frameworks!遇到了library not fo

    最近项目要添加新功能了,真是懒的写,可是既然要写,就要从中学到点新东西。Swift已经发布了两年了,我居然还没用过...

  • Xcode 11 的那些新东西

    Xcode 11 的那些新东西Xcode 11 的那些新东西

  • 新东西

    我的海宽广 2018-01-11 08:36 · 字数 61 · 阅读 0 · 日记本 刚刚见到这个软件一一简书。...

  • 新东西

    要掌握好的新东西和技能还是不少的 比如作图、ppt的技巧,excel的各种实用用法 坚持自律是一件很不容易的事情,...

  • 新东西

    我们每天总是遇到很多的问题,包括就是人们进一步发展的动力,如果没有这些痛苦,我们做什么都会无感,那做这些东西也不会...

网友评论

    本文标题:Swift 4里的新东西

    本文链接:https://www.haomeiwen.com/subject/aswrcxtx.html