Swift 3.0 发布,又要学习一门新语言了!
Apple 正式发布 Swift 3.0,这是 Swift 开源以来发布的第一个主要版本。Swift 3 包含大量重要的核心语言和标准库改进以及优化;Swift 的 Linux 移植;并且首次发布官方的 Swift 包管理器。
Swift 3 迁移
Swift 3 源代码不兼容旧版本,主要是因为 SE-0005 和 SE-0006 的改进,这些改进不仅影响 Standard Library APIs 命名,还会完全改变 Objective-C APIs (特别是 Cocoa ) 导入到 Swift 的方式。
为了帮助用户迁移到 Swift 3,Xcode 8.0 包含了一个代码迁移工具,可以自动处理大量必需的源变化。
此外,苹果还发布了编程学习应用 Swift Playgrounds for iPad。
平台
Linux (Ubuntu 14.04 和 Ubuntu 15.10)
Linux 移植目前包括 Swift Core Libraries 和 Swift Package Manager。
Ubuntu 14.04 和 Ubuntu 15.10 官方二进制包现已提供下载。
语言改进
Swift 3.0 是个重大的语言版本,源代码不兼容 Swift 2.2 和 2.3,主要包含以下革命性的改进:
- SE-0002: 移除局部套用的
func
声明语法 - SE-0003: 从函数参数移除
var
- SE-0004: 移除
++
和--
操作符 - SE-0005: 更好的 Objective-C APIs 到 Swift 转换
- SE-0006: 标准库使用 API 指南 Guidelines
- SE-0007: 移除 C 风格的 for 循环条件和增量器
- SE-0032: 为
SequenceType
添加first(where:)
方法 - SE-0033: 将 Objective-C Constants 导入为 Swift 类型
- SE-0077: 改进操作符声明
- SE-0107: UnsafeRawPointer API
- SE-0109: 移除
Boolean
协议 - SE-0114: 更新 Buffer “Value” 名称为 “Header”
- SE-0115: 重命名 Literal Syntax 协议
- SE-0116: 将 Objective-C
id
导入为 SwiftAny
类型 - SE-0121: 移除
Optional
比较操作符 - SE-0124:
Int.init(ObjectIdentifier)
和UInt.init(ObjectIdentifier)
应该包含一个bitPattern:
label - SE-0125: 移除
NonObjectiveCBase
和isUniquelyReferenced
- SE-0127: 清除 stdlib Pointer 和 Buffer Routines
- SE-0133: 重命名
flatten()
为joined()
- SE-0134: 重命名 String 中 2 个 UTF 8 相关的属性
更多详细改进请看发行说明:https://swift.org/blog/swift-3-0-released/
发表回复