美团■天下武功唯快不破:6种快速编写代码的方式


美团■天下武功唯快不破:6种快速编写代码的方式
文章图片
美团■天下武功唯快不破:6种快速编写代码的方式
文章图片
美团■天下武功唯快不破:6种快速编写代码的方式
文章图片
美团■天下武功唯快不破:6种快速编写代码的方式
文章图片


全文共1098字 , 预计学习时长5分钟

图源:unsplash
经过多年的发展 , Swift如今也得到了许多人的青睐 。 它不仅提供类型安全性 , 而且比许多语言都简洁得多 。 它的功能在发展中不断增加 , 一定有很多你不知道的技巧隐藏其中 。
本文我就将和大家分享一些Swift语言编写代码的方法 , 它们可以帮助你构建出更好的iOS应用 。
在初始化时调用willSet和didSet
简而言之 , 就是第一次初始化属性时不会调用willSet和didSet属性观察器 , 但是可以通过将初始化包装在defer语句中来解决这个问题 。
尽管有点笨拙 , 但是由于你不得不以某种方式设置默认值(在声明中或在外部defer中) , 掌握之后就会很快乐:
使用Maps安全打开选项
通常我们会使用if let或guardlet语法来安全地打开Swift中的选项 , 但有时我会想能不能有其他方法解决这个问题 , 尤其是在展开子属性时 。 我们的另一个选择是:使用map操作符打开选项 。
只有当包含在map中的可选值包含某个值的时候才对其进行计算 , 从而确保其不为nil 。
在可选的元组中 , 使用maps进行解包也很方便 。 用Swift语言可以进行这样的操作:
func sampleTuple() ->(String String)?{
   return nil
let (a b) = sampleTuple().map { ($0 $1)?? (\"NA\"\"NA\")

使用重新抛出进行强大的异常处理
想必大家对throws关键字都很熟悉用得也很多 , 但是Swift中的rethrows功能可能就不是常常会用到了 。 使用rethrows关键字声明的函数表示 , 只有当其函数参数之一throws时才会抛出错误 。
也就是说 , 如果Closure参数没有引发错误 , 那么在调用它时我们无需使用其他try方法 , 这样一来就能大大减少样板代码 。 正如在下面的代码中看到的那样 , 我们不必将相同的不抛异常函数放入do-catch块中 。
使用协议扩展进行默认实现
Swift协议功能强大 , 但它们不允许你指定默认实现 。 如果你想避免重写方法 , 这样做可能会非常方便 。 此外 , 你还可以使用扩展中的where子句仅为某些约束指定协议实现 , 但要确保自己不会在代码库中过度使用协议扩展 。
轻松跟踪字典中的更改
如何进行Swift字典中的更改(可能是用于调试)?繁琐的方法是通过分散内容来实现 , 但是也有一种快速的方法 , 只需在保存该字典的对象上定义一个下标:
【美团■天下武功唯快不破:6种快速编写代码的方式】在不同场景使用guardlet
Guard let语句使用的是故障安全机制 , 其中nil值可确保您立即返回上一层 。 但在某些情况下 , return并不是对我们最有利的方法 。 例如 , 你可能处于for循环中 , 只想要continue 或者 break , 那么可以按照以下方式进行操作:
学会这些小技巧 , 去享受纵横驰骋的编码快乐吧 。
留言点赞关注
我们一起分享AI学习与发展的干货
如转载 , 请后台留言 , 遵守转载规范