当前位置: 首页 > 科技观察

武侠世界只有快:快速写代码的6种方法

时间:2023-03-21 17:44:14 科技观察

本文转载自公众号《读书芯》(ID:AI_Discovery)经过多年的发展,Swift现在已经受到了很多人的青睐。它不仅提供类型安全,而且比许多语言简洁得多。它的功能在发展中不断增加,其中一定隐藏着很多你不知道的花样。在本文中,我将与大家分享一些用Swift语言编写代码的方法,可以帮助大家构建更好的iOS应用。在初始化时调用willSet和didSet简而言之,第一次初始化属性时不会调用willSet和didSet属性观察器,但这可以通过将初始化包装在defer语句中来解决。虽然有点笨拙,但由于您必须以某种方式设置默认值(在声明中或在外部延迟中),掌握它是一种乐趣:使用地图安全地打开选项。通常我们使用iflet或guardlet语法来安全地在Swift中打开选项,但有时我想知道是否有另一种方法可以解决这个问题,尤其是在扩展子属性时。我们的另一个选择:使用map运算符来展开选项。仅当映射中包含的可选包含值时才对其进行评估,从而确保它不为零。在可选元组中,使用映射进行解包也很方便。这样的操作可以用Swift语言来执行:funcsampleTuple()->(String,String)?{returnnil}let(a,b)=sampleTuple().map{($0,$1)}??("NA","NA")使用re-throwing实现强大的异常处理throws关键字想必大家都很熟悉,用的也很多,但是Swift中的rethrows功能可能用得不多。用rethrows关键字声明的函数表示只有当其函数参数之一抛出时才会抛出错误。也就是说,如果Closure参数没有抛出错误,我们在调用它时就不需要再使用try方法,这样可以大大减少样板代码。正如您在下面的代码中看到的,我们不必将相同的非抛出函数放入do-catch块中。为默认实现使用协议扩展Swift协议功能强大,但它们不允许您指定默认实现。如果您想避免覆盖方法,这样做会非常方便。此外,您可以使用扩展中的where子句仅为某些约束指定协议实现,但请确保您不要在代码库中过度使用协议扩展。轻松跟踪字典中的变化下标:在不同场景中使用guardletguardlet语句使用故障安全机制,其中nil值可确保您立即返回到上一层。但在某些情况下,返回并不是我们最好的方式。例如,你可能在一个for循环中,只想继续或中断,那么你可以通过以下方式进行:学习这些小技巧,享受编码的乐趣。