条件赋值运算符

开发人员通常需要根据可选值构建字典。 当然,在Swift中很容易做到,对吧? 只是[String:Any?],所以为什么写一篇有关它的博客文章? 对于便利的条件赋值运算符,我们将其用作用例之一。

因此,让我们来看一个现实生活项目中的示例-Zonky。 该应用程序显示一个屏幕,您可以在其中选择多个贷款参数以过滤贷款列表。

当然,所有这些参数都是可选的。 为了应用选定的过滤器,我们需要将参数作为字典发送到服务器。 带有字典的过滤功能如下所示:

看来还可以,但是我们不希望字典中出现可选内容,因为Alamofire将[String:Any]作为参数字典的一种类型。 我们该如何解决? 最直接的解决方案非常明显:

很好,它可以工作,但是请想象更大的参数集。 那是很多丑陋而无聊的代码! 👎这就是导致我们了解条件赋值运算符背后的思想的原因。 我们只想为字典分配一个值,除非它不是nil。

Voilà。 更短,更美观,更易读💪但它不是Swift附带的标准运算符,因此让我们看一下它的幕后工作方式。 基本思想很简单-我们只是将第二个示例中使用的展开代码和赋值代码移到了自定义运算符定义中。

就是这样! 我们有一小段代码,这使我们的代码库变得更好。 您不仅可以使用此运算符来构建字典(还有其他甚至可能更聪明的方法来实现此目的),而且只要需要仅在值不为零时才赋值,并且相信我,这是一个很常见的情况,您会喜欢😏

如果您喜欢这个简单的技巧,请参阅我们的ACKategories-轻量级的开放源代码库,其中包含类似的有用工具和扩展,或者仅等待我们的下一篇博客文章,我们将为您展示更多来自厨房的食谱👨‍🍳

最初于 2018 年6月4日 发布在 www.ackee.cz 上。