Tag: Guard Let

展开Swift 3.0中的可选值-Guard Let vs If Let?

当以iOS开发人员的身份编写代码时,您将需要灵活性:var或let,类或结构,集合或数组。 不管它的功能是否不同,要想成为一名更高效的程序员,做出选择都至关重要。 展开可选值也不例外。 解包可选值时,我们中的许多人都对可选绑定和“ if let”语法约定非常熟悉。 “ if let”允许我们仅在有值的情况下安全地解开可选值,否则,代码块将不会运行。 简而言之,当值存在时,它的重点是“真实”条件。 然后,我可以一直使用“ if let”吗? 我为什么还要烦恼使用警卫let语句? 好吧,让我们通过检查下面的代码来决定原因。 在此示例中,我们从iOS设备上的文本字段中获取用户输入以制作完整的故事。 用户输入是:名字,年龄,城市和职业。 在这里,我们得到了可选值,必须将它们解开后才能正确显示在标签上。 我们可能会通过编码如下代码立即想到“ if let”来解开那些可选值: 您如何看待此代码? 它运作良好,但请看一下嵌套条件的冗长行。 如果我们需要用户提供更多信息怎么办? 我们应该继续写嵌套条件吗? 看起来很乱。 我们还可以将“ if let”与提前退出结合使用,如下所示: 它看起来比以前的要好一些。 但是,由“ if let”解开的值只能在if块的范围内使用。 在if块之外,必须使用!再次强制将其拆开。 似乎效率不高。 现在,让我们来看一下使用“ guard”语句的代码。 另一方面,“后卫”声明使我们的代码更具可读性。 可读性和易于维护非常重要,尤其是与其他程序员一起工作时。 如上面的“ if let”示例中所示,“ guard”语句有助于避免众多嵌套条件的复杂性。 与“如果让步”不同,“后卫”声明使早期退出成为可能,并着重于带有错误的负面案例,而不是正面案例。 这意味着如果不满足条件,我们可以通过运行卫队的else语句来测试否定情况,而不是先等待嵌套条件通过。 但是,使“后卫”声明真正脱颖而出的原因在于,在其余的冷块中仍保留有未包装的可选值。 这意味着当条件通过时,可选值将被解包,并且即使在条件之外也无需强制再次对其进行拆包即可使用。 无需像我们在“如果放手”中那样提前退出就强行打开它们。 请参见下面的代码。 需要注意的一件事:每个“ guard”语句必须始终通过退出其所在范围来转移控制权。更具体地说,如果在功能中使用“ guard”,则通常将“返回”,而在循环中,则将“中断” ”或“继续”。 (注意:“ break”和“ […]