Language Improvements
- 支持 isMultiple(of:)
- 使用##来显示反斜杠与“”
- 支持isNumber来判断字符是否为数字
- 支持isAlphabetic
- 去掉Subsequences
Dictionary
支持compactMapValues
DictionaryLiteral 改名为 KeyValuePairs
插入字符方法更新
swift4.2 组装string的步骤:将每个string包装成stringInterpolationSegment,再将所有stringInterpolationSegment包装成stringInterpolationSegment,形成新的string。
let language = "Swift"
let languageSegment = String(stringInterpolationSegment: language)
let space = " "
let spaceSegment = String(stringInterpolationSegment: space)
let version = 4.2
let versionSegment = String(stringInterpolationSegment: version)
let string = String(stringInterpolation: languageSegment, spaceSegment, versionSegment)
swift5
1.生成DefaultStringInterpolation
2.appendLiteral string
- stringInterpolation 生成新的string
// 1
var interpolation = DefaultStringInterpolation(
literalCapacity: 7,
interpolationCount: 1)
// 2
let language = "Swift"
interpolation.appendLiteral(language)
let space = " "
interpolation.appendLiteral(space)
let version = 5
interpolation.appendInterpolation(version)
// 3
let string = String(stringInterpolation: interpolation)
将switch中的default 改名为@ unknown
新增 Result
Never 支持 Equatable 和 Hashable
增加dynamically callable types来与Python或Ruby等脚本语言互操作 dynamicallyCall
Package Manager更新
Platform Deployment Settings ,可指定minimum required platform deployment target version。如.iOS(.v12),
Target Build Settings,可定制化
Dependency Mirroring,新增
Making Codable Ranges,
Flattening Nested Optionals:try? in Swift 5 doesn’t create nested optionals
Removing Customization Points From Collections:移除了collection的Customization,因为容易产生理解错误。
- Identity Key Paths:Swift 4.2 通过 .self 来访问value
tutorial.self = Tutorial(title: "What's New in Swift 5?", author: "Cosmin Pupăză")
swift5 增加identity key paths。
tutorial[keyPath: \.self]= Tutorial(title: "What's New in Swift 5?", author: "Cosmin Pupăză")
-
Build Configuration Updates
增加 < ,可替代 !swift(>=5) -
Using Variadic Parameters for Enumeration Cases With Associated Values
swift4.2 枚举值可以这样写case tutorial(_: String...)
swift5 中,不再支持,取代为case tutorial([String])
-
Deprecating String Index Encoded Offsets
swift 4.2 对string做UTF-16 编码。swift5则是UTF8.
encodedOffset
取代为utf16Offset(in:)
总结
Swift 5 增加了ABI稳定,因此,今后的版本不会再有太大的改变。
更多内容可参考 CHANGELOG和Swift standard library diffs
网友评论