guard分支结构

iOS开发笔记之九十二——Swift中的guard关键字 guard中文有"守护"的意思,guard关键字在官方文档中的具体解释如下: “A guard statement, like an if statement, executes statements depending on the Boolean value of an expression. You use a guard statement to require that a condition must be true in order for the code after the gua 阅读详情

在Swift中,除了if、switch分支结构之外,又增加了一种分支结构——guard。

guard语句与if语句非常类似,可以判断一个条件为true情况下执行某语句,否则终止或跳过执行某语句。它的设计目的是替换复杂if-else语句的嵌套,提高程序的可读性,在某些情况下可以取得很好的效果。


guard的结构如下:

guard  条件表达式  else {

语句

  }

语句组

当条件表达式为true时,跳过else语句中的内容,执行语句组内容,条件表达式为false时执行else语句中的内容。


接下来看一个对比:(创建一个函数判断Blog结构体中的结构是否完整)

struct Blog {
    let name: String?
    let URL: String?
    let Author: String?
}
func ifLongStyleBlog(blog: Blog) {
    if let blogName = blog.name {
        print("这篇博客名: \(blogName)")
        
        if let blogAuthor = blog.Author {
            print("这篇博客由\(blogAuthor)写的")
            
            if let blogURL = blog.URL {
                print("这篇博客网址: \(blogURL)")
            } else {
                print("这篇博客没有网址!")
            }
        } else {
            print("这篇博客没有作者!")
        }
    } else {
        print("这篇博客没有名字!")
    }
} //if-else结构嵌套看起来非常的复杂且混乱,不便于阅读
func guardlongStyleBlog(blog: Blog) {
    guard let blogName = blog.name else {
        print("这篇博客没有名字!")
        return
    }
    
    print("这篇博客名: \(blogName)")
    
    guard let blogAuthor = blog.Author else {
        print("这篇博客没有作者!")
        return
    }
    
    print("这篇博客由\(blogAuthor)写的")
    
    guard let blogURL = blog.URL else {
        print("这篇博客没有网址!")
        return
    }
    
    print("这篇博客网址: \(blogURL)")
} //可以清楚地看出guard大大地提高了程序的可读性


QuickFix Java 讲解(一)概述、下载方法,和协议内容 本系列力求手把手教你怎样利用QuickFix Java 搭建自己的 FIX 协议收法平台,以及其中的注意事项。 所有源码的地址(免费): https://github.com/zongzhec/QuickFixPractise 1. 什么是FIX,QuickFix,Quick Java? 1.1. 什么是FIX 官网以及其他翻译自官网的帖子都太官方了,这里我们设想一个情景: 你是一个交易员,现在客户打电话来让你下个单买点股票。你啪啪啪的在你的机器上熟练地输入了下单指令。系统显示:成... 阅读详情

相关推荐

Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

Polyworks脚本开发学习笔记(十五)-利用Python连接Polyworks的COM组件

qq_43662503的博客 2501

Swift guard语句

Swift guard语句 guard语句的主要用途是在一定条件下将程序控制转移到范围之外。这些语句类似于if语句,后者根据特定条件(布尔值)执行语句,但与if不同,guard语句仅在不满足特定条件时才运行。 而且,guard内的语句必须退出范围,因此,我们必须在guard语句结束时返回、中断、继续或抛出用户程序控制语句。 guard语句的语法 guard expression else { //statements //必须包含的语句:return, break, continue or

华山论码 601

ThreeJS教程:地图案例(包围盒、正投影)

推荐:将加入你的3D工具链。

jianshi2023的博客 1007

Swift Guard Statement

When I first saw the Swift guard statement during Apple’s Platform State of the Union, I couldn’t quite understand why I would ever use it. So what is it? The tl;dr is as follows: Like an if st

Real鹏的专栏 719

U8-固定资产月末结账报错:BOF或EOF中有一个是真

度了下,发现此问题一般是由于fa_Vtsobject表缺少对应月份的记录导致,补上即可,但是查看发现此表记录正常。 跟踪后发现定位到以下语句: select * from AccInformation where cSysID = N'FA' and cName =N'bVoucherApply'上述语句执行后没有任何记录显示,但是在正常的账套执行是有记录的,那有可能就是记录丢失导致,执行以下

guizhouakun的博客 5917

基于ADRC算法的多旋翼飞行器抗扰动控制实践

本文详细介绍了基于ADRC算法的多旋翼飞行器抗扰动控制实践,通过线性扩张状态观测器(LESO)实时估算风力等扰动,实现提前补偿,显著提升飞行稳定性。文章结合具体案例和工程实现技巧,展示了ADRC在突风条件下的优异表现,为无人机控制提供了高效解决方案。

weixin_29284885的博客 191

Swift学习笔记(一):guard 和 if 的用法及区别

一、guard是什么?guard是 swift 2.0推出的新的判断语句的用法。guard语句和if语句类似,都是根据关键字之后的表达式的布尔值决定下一步执行什么。和if语句不同的是,guard语句只有一个代码块,而if语句可有多个代码块。(如 if 、else if、 else) 那么guard到底是什么作用呢?顾名思义,guard是作为保卫作用而存在的。当你不满足我的要求,那么请您出去;如果满足

从零开始学Swift 1万+

告别“盲开”:手把手教你用MCU内置比较器搞定BLDC无感方波启动(附代码片段)

本文详细介绍了如何利用MCU内置比较器实现BLDC无感方波启动,解决传统无传感器控制中的'盲开'问题。通过虚拟中性点电路设计和三段式启动流程,结合反电动势检测和过零检测技术,提供了一套经济高效的解决方案,并附有可直接移植的代码片段,助力工程师快速实现可靠的无感控制。

weixin_33694172的博客 503

Swift的guard语句的用法

与if语句相同的是,guard也是基于一个表达式的布尔值去判断一段代码是否该被执行。 与if语句不同的是,guard只有在条件不满足的时候才会执行这段代码。 你可以把guard近似的看做是Assert,但是你可以优雅的退出而非崩溃。 func fooManualCheck(x: Int?) {     if x == nil || x         // 不符合值的要求时,写

jsjysxw的博客 1106

新手小白 必须精进的 “ FLASH分区管理Code and Data ” !!!最强文章解析!!!

FLASH“代码区”和“数据区”不是每个项目都必须显式管理,但只要你的产品功能越来越丰富,对可靠性和扩展性要求提高,就一定要学会科学划分和使用。这也是嵌入式工程师进阶路上的必修课!

qq_75157958的博客 933

【异常】Claude Code 第三方API 400报错(thinking type should be enabled or disabled)解决方案

摘要: Claude Code接入第三方API端点时出现400参数错误,主要因新版默认启用的Adaptive Thinking功能与旧版接口参数格式不兼容(需thinking: {type: "adaptive"},但第三方仅支持布尔值)。解决方案为修改本地settings.json配置文件,添加"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"环境变量并重启客户端,即可恢复思考模式功能。Adaptive Th

奶爸的编程之路,也就一周冷个三天 1万+

swift 分支结构

//分支结构     /*     条件: 没有 ()     2. {} 不能被省略         在swift 中  没有 非零既真的概念         只有true  / false     以后再也不用担心 ! 忘写了         if (!dataList) {}     */     func demo2() {    

dongxiaojie1228的博客 304

【A2DP】规范精讲[1]: 深入解析A2DP协议的核心架构

在蓝牙技术发展的早期阶段,音频传输主要通过SCO(同步面向连接)链路实现,这种设计主要针对语音通信,音质有限且功能单一。随着人们对无线高质量音频需求的增长,​​Advanced Audio Distribution Profile (A2DP)​​ 应运而生,成为蓝牙音频传输的技术基石。

byte轻骑兵的技术小窝 1万+

【Haskell】分支表达式

本文介绍Haskell中的分支表达式,包括if-then-else、哨兵模式、MultiWayIf、case-of。

陈戏猿 1397

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

04-Swift逻辑分支

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34015860的博客 133

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Swift3 0基本语法01

Swift3.0之基本知识 常量&变量 在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量 使用let来定义常量,定义之后不可以修改 使用var来定义变量,定义之后可以修改 变量的基本使用 import UIKit let a : Int = 10 // 错误写法,当一个标识符定义为常量时是不可以修改的 // a = 20 ...

weixin_34194317的博客 122

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

揭秘Java switch模式匹配在物流调度中的应用:3个你必须掌握的优化技巧

掌握物流调度的 Java switch 模式匹配优化技巧,提升代码可读性与执行效率。适用于订单分类、运输方式匹配等场景,通过模式匹配简化多类型判断逻辑,减少冗余条件分支。三大优化策略助你写出更清晰、易维护的调度系统代码,值得收藏。

PixelStream的博客 642

使用 guard 的正确姿势

guard 是 Swift 2 中我最喜爱的特性之一。虽然完全不使用 guard 也没有什么影响,它只是给我们提供了更微妙的句法表达,但是如果能够正确使用 guard 语句,无疑是一件令人愉快的事。它可以让我们的方法表意更加明确,更易于阅读,它能够表达『提前退出』的意图,同时提高了程序的健壮性。 因此,学习和理解如何正确使用 guard 表达式非常重要。guard 有它适用的场景,但是这并不意味...

麦峰强的博客 2763

Python分支结构全解析:从基础if-else到模式匹配

分支结构是编程语言中控制程序执行流程的核心机制,通过条件判断实现不同代码路径的选择。Python中的分支结构不仅包含基础的if-elif-else语句,还涉及布尔运算短路特性、三元表达式等高效编程技巧,以及Python 3.10引入的模式匹配等高级特性。合理运用分支结构能显著提升代码可读性和执行效率,特别是在数据处理、用户输入验证等场景中。通过理解条件判断的底层原理,开发者可以避免常见陷阱,编写出更Pythonic的代码。本文深入探讨if-else标准用法、match-case模式匹配等关键技术,并结合数据

weixin_34013044的博客 331

005--swift基础语法(逻辑分支)

简单的分支 if语句 // MARK: - 简单的分支 func demo(){ let x = 10 /** 1. 条件不需要() 2. 语句必须有{} --很多公司的代码规范中,禁止不使用{} */ if x > 5{ print("大了")

黑码哥的技术博客 1602

swift for循环_跟我学Swift 5.2逻辑分支与循环

if分支判断句可以不加()。判断之后的执行语句必须用{}括起来。在判断句中必须有明确的 Bool 值(true 或者 false)。案例一let a = 10// 错误写法//if a {// print("a")//}// 正确写法if a > 9 { print(a)}案例二let score = 87if score < 60 { print("不及格...

weixin_39752800的博客 424

C++11多线程1

C++多线程的创建、lock_guard和unique_lock类模板

LF_1845529754的博客 1150

Swift的一些基本属性2 (控制流)

/// guard 守卫,在 Swift 2.0 推出的语法  和 if let 刚好相反  guard let 是在判断之后的分支有效 // 如果守护的变量 为 nil,直接提示并且返回 /// 可选项的演示     /// if let/var     func optionDemo3() {         var x: Int? = 10

dingwenchao456的博客 300

XZ_Swift之控制流

由于可选项的内容可能为 nil, 而一旦为 nil 则不允许参与运算; 因此在实际开发中,经常需要判断可选项的内容是否为 nil; 如果单纯使用 if,会让代码嵌套层次很深,让代码不宜阅读和维护,为了解决这一问题,苹果提供了以下三种方式: 1> ?? 运算符用于判断 变量/常量 的数值是否是 nil ,如果是则使用后面的值替代;在Swift开发中, ?? 能够简化代码的编写。 2> if

understand_XZ的博客 403

Seedance 2.0双分支架构崩坏实录:当torch.compile()遇上分支条件跳转,如何用FX Graph可视化+IR级断点实现0日志精准归因?

精准定位Seedance 2.0双分支扩散变换器架构解析中的报错根源,详解torch.compile()与条件分支冲突的调试方案。结合FX Graph可视化与IR级断点,实现无日志精准归因,适用于扩散模型训练崩溃场景。Seedance 2.0 双分支扩散变换器架构解析 报错解决方法值得收藏。

FuncWander的博客 442

Seedance 2.0训练崩塌90%源于这1个配置错误:分支异步更新阈值设定不当导致梯度爆炸(附自动校验脚本)

Seedance 2.0训练崩塌90%可快速定位修复!本指南深入解析双分支扩散变换器架构,聚焦异步更新阈值配置错误导致的梯度爆炸问题,提供自动校验脚本与实测调参策略。适用于Stable Diffusion微调等生成任务,稳定性提升显著,值得收藏。

codeink的博客 384
上一篇: 操作符重载
下一篇: 结构体的变异方法
麻豆_matou
博客等级 码龄10年 41粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值