Swift 5的新功能

我之前曾在Swift 5中撰写过有关ABI稳定性的文章-这是什么?

但是Swift 4和Swift 5之间的差异远不止于此。 这是我最喜欢的一些更改。

标准结果类型

新的结果类型类似于带有.success和.failure情况的枚举。 结果返回的错误是安全类型。

您总是可以返回错误类型,例如代表错误的枚举。

在Swift 5之前,如果您符合LocalizedError协议,则可以收到自定义错误消息。 为了引发这样的错误,我们将使用的函数标记为throwing(使用throws关键字)。

在Swift 5之前

如果有错误,则将错误捕获到catch块中。

新的结果类型看起来像这样:

它返回一个成功(例如-success(“ hello Dave”))或失败(例如-failure(SwiftFeatures.StringError.nullString))。 只需使用开关盒即可解决。 返回的错误是类型安全的,因此在这种情况下,我们可以保证产生StringError:

使用新的结果类型,我们可以获取结果数据或强类型错误。

这些没有可选选项的强类型错误将使使用Result类型处理异步函数中的错误变得更加容易,并且使我们清楚是否有错误或代码中的值。 使用这个新的结果代码枚举所有错误类型也是一件很容易的事情-整洁!

isMultiple(of 🙂

这是一种清晰的方法,并且比除法余数运算符(%)的钝度小。 为了好玩,这里是FizzBu​​zz的实现:

转义原始字符串

通过在字符串前放置#,可以在字符串中使用引号和反斜杠!

字符串插值

字符串连接代码执行let concat = a + b + c意味着Swift将a添加到b,并将结果添加到c。 这种极其低效的操作可以用字符串插值代替。 例如,可以在打印语句打印中使用let age = 30 (“年龄:” \(年龄))。

我们可以通过使用appendInterpolation()方法向String.StringInterpolation添加扩展来做得更好。

地址是:弗罗斯特街12号1A室

这是关于控制应用程序中数据格式化的方式,实际上,我们甚至可以使用这些技术添加颜色格式等等!

字符isNumber

您可以在Swift 5中测试字符是否为数字!

unicodeScalar的属性

这些有很多! 用法如下:

这是一些可用的属性(其余部分在这里= https://developer.apple.com/documentation/swi%E2%80%A6):

var isASCIIHexDigit: Bool

一个布尔值,指示标量是否为通常用于表示十六进制数字的ASCII字符。

var isAlphabetic: Bool

一个布尔值,指示标量是否为字母。

var isEmoji: Bool

一个布尔值,指示标量是否具有表情符号表示形式,是否为默认。

var isHexDigit: Bool

一个布尔值,指示标量是通常用于表示十六进制数字还是兼容等效项的标量。

var isLowercase: Bool

一个布尔值,指示是否将标量的字母格式视为小写。

var isUppercase: Bool

一个布尔值,指示是否将标量的字母格式视为大写。

var isWhitespace: Bool

一个布尔值,指示标量是否为空白字符。

字典的改进

现在,您可以使用compactMapValues。

这就是它的意思-映射,然后不包含nil的值。

未来枚举案例的默认未知

@unknown 默认值

开关曾经是穷举的,但是现在Swift 5会处理增加的枚举情况,如果在开关的默认情况下将@unknown添加到默认情况下,您会得到一个很好的警告,即增加的枚举意味着该开关不是穷举的。

现在,只需友好的警告即可将更多的案例添加到枚举中。

想联系吗? 在此处尝试链接:

史蒂文·柯蒂斯(@stevenpcurtis)| 推特
史蒂文·柯蒂斯(@stevenpcurtis)的最新推文。 在开发iOS应用程序的同时学习计算机硕士学位… twitter.com