《Swift 进阶》对一本书来说是一个很大胆的标题,所以我想我们应该先解释一下它意味着什么。
当我们开始本书第一版的写作的时候,Swift 才刚刚一岁。我们推测这⻔语言会在进入第二个 年头的时候继续高速地发展,不过尽管我们十分犹豫,我们还是决定在 Swift 2.0 测试版发布以 前就开始写作。几乎没有别的语言能够在如此短的时间里就能吸引这么多的开发者前来使用。
但是这留给了我们一个问题,你如何写出 “符合语言习惯” 的 Swift 代码?对某一个任务,有正 确的做法吗?标准库给了我们一些提示,但是我们知道,即使是标准库本身也会随时间发生变 化,它常常抛弃一切约定,又去遵守另一些约定。不过,在过去三年里,Swift 高速进化着,而 优秀的 Swift 代码标准也日益明确。
对于从其他语言迁移过来的开发者,Swift 可能看起来很像你原来使用的语言,特别是它可能 拥有你原来的语言中你最喜欢的那一部分。它可以像 C 一样进行低层级的位操作,但又可以避 免许多未定义行为的陷阱。Ruby 的教徒可以在像是 map 或 lter 的轻量级的尾随闭包中感受 到宾至如归。Swift 的泛型和 C++ 的模板如出一辙,但是额外的类型约束能保证泛型方法在被 定义时就是正确的,而不必等到使用的时候再进行判定。灵活的高阶函数和运算符重载让你能 够以 Haskell 或者 F# 那样的⻛格进行编码。最后 @objc 和 dynamic 关键字允许你像在 Objective-C 中那样使用 selector 和各种运行时的动态特性。
有了这些相似点,Swift 可以去适应其他语言的⻛格。比如,Objective-C 的项目可以自动地导 入到 Swift 中,很多 Java 或者 C# 的设计模式也可以直接照搬过来使用。在 Swift 发布的前几 个月,一大波关于单子 (monad) 的教程和博客也纷至杳来。
百度网盘
链接:https://pan.baidu.com/s/1o2b3fOPvSeV-5zmHPdHTjw 密码:1wy5