创意电子

标题: 天下武功唯快不破:6种快速编写代码的方式 [打印本页]

作者: 读芯术    时间: 2020-6-22 11:36
标题: 天下武功唯快不破: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字典中的更改(可能是用于调试)?繁琐的方法是通太过散内容来实现,但是也有一种快速的方法,只需在保存该字典的对象上界说一个下标:



                               
登录/注册后可看大图

在不同场景使用guardlet


Guard let语句使用的是故障安全机制,其中nil值可确保您立即返回上一层。但在某些情况下,return并不是对我们最有利的方法。例如,你可能处于for循环中,只想要continue 大概 break,那么可以按照以下方式进行操作:



                               
登录/注册后可看大图

学会这些小技巧,去享受纵横驰骋的编码快乐吧。



                               
登录/注册后可看大图

留言点赞关注
我们一起分享AI学习与发展的干货
如转载,请背景留言,遵守转载规范
作者: 艺术就是爆炸69451656    时间: 2020-6-22 13:14
转发了
作者: 卧室以外都沉没    时间: 2020-6-22 14:16
转发了
作者: 小犀1号    时间: 2020-6-22 18:30
怎么都不写是哪种语言的[捂脸]




欢迎光临 创意电子 (https://wxcydz.cc/) Powered by Discuz! X3.4