From b6a56e5ebcc39a196db08a02f803ef729af21ff5 Mon Sep 17 00:00:00 2001 From: Karsa Wu Date: Sat, 16 Feb 2019 04:25:00 +0800 Subject: [PATCH] update compatibility chapter (#889) --- source/chapter1/02_version_compatibility.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/source/chapter1/02_version_compatibility.md b/source/chapter1/02_version_compatibility.md index 62331f44..0b1f829d 100755 --- a/source/chapter1/02_version_compatibility.md +++ b/source/chapter1/02_version_compatibility.md @@ -1,15 +1,10 @@ # 版本兼容性 + +本书描述的是在 Xcode 10.2 中的默认 Swift 版本 Swift 5。你可以使用 Xcode10.2 来构建 Swift 5、Swift 4.2 或 Swift 写的项目 -本书描述的是 Swift 4.1,是 Xcode 9.2 中包含的默认版本。你可以用 Xcode 9.2 来构建用 Swift 4 或 Swift 3 写的项目。 +当您使用 Xcode 10.2 构建 Swift 4 和 Swift 4.2 代码时,除了下面的功能仅支持 Swift 5,其他大多数功能都依然可用。 -> 注意 -> -> 当 Swift 4 编译器编译 Swift 3 版本的代码时,它识别的语言版本为 3.2 版本。因此,你可以使用像 `#if swift(>=3.2)` 条件编译块来编写多版本编译器可以并存的代码。 +* **try?** 表达式不会为已返回可选类型的代码引入额外的可选类型层级。 +* 大数字的整型字面量初始化代码的类型将会被正确推导,例如 **UInt64(0xffff_ffff_ffff_ffff)** 将会被推导为整型类型而非溢出。 -当你用 Xcode 9.2 编译 Swift 3 的代码,Swift 4 中大部分功能是可以使用的。也就是说,下面的功能仅仅是 Swift 4 的代码中可以使用: - -* 字符串的子串操作返回的实例是 `Substring` 类型,不再是 `String` 类型。 -* 在更少的地方显式的添加 `@objc` 属性。 -* 同一文件中类型的扩展可以访问这个类型的私有成员。 - -用 Swift 4 写的项目可以依赖用 Swift 3 写的项目,反之亦然。这意味着,如果你将一个大的项目分解成多个框架(framework),你可以每次一个框架地迁移 Swift 3 代码到 Swift 4。 +用 Swift 5 写的项目可以依赖用 Swift 4.2 或 Swift 4 写的项目,反之亦然。这意味着,如果你将一个大的项目分解成多个框架(framework),你可以每次一个框架地迁移 Swift 4 代码到 Swift 5。