Swift 开发教程系列 - 第3章:控制流

控制流是编程中用来控制代码执行顺序的关键部分。Swift 提供了多种控制流语句,如条件语句、循环语句和 switch 语句,帮助开发者根据条件执行不同的代码块或多次重复执行代码。

3.1 条件语句

在 Swift 中,条件语句包括 if、else if 和 else,用于根据布尔表达式的结果执行不同的代码块。

if else示例:
let age = 18if age >= 18 {print("You are an adult.")
} else {print("You are a minor.")
}
else if 示例

可以使用 else if 来增加多个条件判断。

let score = 85if score >= 90 {print("Grade: A")
} else if score >= 80 {print("Grade: B")
} else if score >= 70 {print("Grade: C")
} else {print("Grade: D")
}

3.2 循环语句

Swift 支持多种循环语句,主要包括 for 循环和 while 循环,用于重复执行代码块。

for 循环

for 循环常用于遍历数组或重复执行指定次数的代码。

示例代码:
let names = ["Alice", "Bob", "Charlie"]for name in names {print("Hello, \(name)!")
}

遍历一个范围

for i in 1...5 {print("Number \(i)")
}

在上例中,1…5 表示从 1 到 5 的闭区间,for 循环会执行 5 次。

while 循环

while 循环会在每次循环前检查条件,只有条件为 true 时才会继续执行。

示例代码:

var count = 0while count < 5 {print("Count is \(count)")count += 1
}

repeat-while 循环

repeat-while 循环和 while 类似,但它会先执行一次代码块,然后再检查条件。

示例代码:
var number = 1repeat {print("Number is \(number)")number += 1
} while number <= 5

3.3 switch 语句

switch 语句是一种多分支条件语句,适用于处理多个条件情况。与 if-else 不同的是,switch 语句在 Swift 中不需要使用 break,每个分支默认只执行一次。

基本示例

let grade = "B"switch grade {
case "A":print("Excellent")
case "B":print("Good")
case "C":print("Average")
case "D":print("Poor")
default:print("Invalid grade")
}

使用范围匹配

switch 还支持模式匹配,比如数字范围和布尔条件。

let score = 75switch score {
case 90...100:print("Excellent")
case 80..<90:print("Good")
case 70..<80:print("Average")
default:print("Needs Improvement")
}

元组匹配

switch 可以用于匹配多个条件的元组。


let coordinates = (x: 0, y: 0)switch coordinates {
case (0, 0):print("Origin")
case (let x, 0):print("On the X-axis at \(x)")
case (0, let y):print("On the Y-axis at \(y)")
case let (x, y):print("At point (\(x), \(y))")
}

通过掌握 Swift 中的控制流语句,你可以灵活地控制代码的执行顺序,使程序的逻辑更加清晰。下一章我们将介绍 Swift 中的函数与闭包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/2798.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

易灵思fpga pwm生成报错

避免复杂总线 选择正确板子 这个是是全部执行 但是不会自动保存 注意设置 或者使用其他文本显示工具 可能约束会掉 注意复位后没有程序 注意软件不同电脑可能报错 问题未知 尽量简单逻辑

JavaEE初阶--servlet篇(三)HttpServlet/response/request对应方法使用

文章目录 1.总括说明2.httpservlet父类2.1方法介绍2.2dopost方法的演示2.3doput方法的演示 3.HttpServletRequest类3.1方法说明3.2方法使用演示3.3getparameter方法使用3.4使用form表单的方式3.5jackson获取参数 4.HttpResponse类4.1设置状态码4.2自动进行刷新4.3重定向跳转4.3…

矩阵起源 CEO 王龙出席 1024 超互联(苏州)总部节点发布会

10月24日&#xff0c;矩阵起源 CEO & 创始人王龙出席了由中关村超互联新基建产业创新联盟、数字人民币研究院联合主办&#xff0c;世纪互联承办的“超互联&#xff08;苏州&#xff09;总部节点发布会”&#xff0c;并分享了矩阵起源及世纪互联在多模态AI数据智能平台与超互…

大数据-202 数据挖掘 机器学习理论 - 决策树 sklearn 绘制决策树 防止过拟合

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

LTE及EPC技术原理(笔记)

无线网络发展历史 20世纪80年代&#xff1a;模拟技术和FDMA 20世纪90年代&#xff1a;数字技术和TDMA 21世纪初&#xff1a;数字技术和CDMA LTE进步 下行100Mbps&#xff0c;上行50Mbps 用户面时延10-20ms&#xff0c;控制面时延小于100ms 带宽从1.4MHz~20MHz&#xff0…

域用户账户与域组账户管理实战

Windows Server 通过建立账户(包括用户账户和组账户)并赋予账户合适的权限&#xff0c;保证使用网络和计算机资源的合法性&#xff0c;以确保数据访问、存储和交换服从安全需要。 如果是单纯的工作组模式的网络&#xff0c;需要使用“计算机管理”工具来管理本地用户和组&#…

C++类与对象(中)

类的默认成员函数 1. 默认成员函数&#xff0c;就是用户没有去显式实现&#xff0c;而编译器会自动生成的成员函数。 2. 对于⼀个类&#xff0c;一般情况下&#xff0c;编译器会默认生成6个默认成员函数。我们主要学习前面4个默认成员函数&#xff0c;对于后面两个默认成员函数…

HFSS 3D Layout中Design setting各个选项的解释

从HFSS 3D LAYOUT菜单中&#xff0c;选择Design Settings打开窗口&#xff0c;会有六个选项&#xff1a;DC Extrapolation, Nexxim Options, Export S Parameters, Lossy Dielectrics, HFSS Meshing Method, and HFSS Adaptive Mesh. DC Extrapolation 直流外推 直流外推分为标…

Python绘制爱心

文章目录 系列目录写在前面技术需求完整代码代码分析写在后面 系列目录 序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代…

C++ | Leetcode C++题解之第538题把二叉搜索树转换为累加树

题目&#xff1a; 题解&#xff1a; class Solution { public:TreeNode* getSuccessor(TreeNode* node) {TreeNode* succ node->right;while (succ->left ! nullptr && succ->left ! node) {succ succ->left;}return succ;}TreeNode* convertBST(TreeNo…

Linux基础命令(十)之 压缩命令 zip,gzip,bzip2,xz,tar

目录 一&#xff0c;zip和unzip 常见用法 二&#xff0c;gzip和ungzip命令 常见用法 三&#xff0c;bzip2和bunzip2命令 常见用法 四&#xff0c;xz和unxz命令 常见用法 五&#xff0c;归档命令tar 参数及其作用 常见用法 一&#xff0c;zip和unzip 语法&#xff1a;…

已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘

部署GPTSoVITS过程中&#xff0c;开启一键三连进程发生&#xff0c;报错AsyncRequest object has no attribute _json_response_data 具体报错内容为 (GPTSoVITS) PS D:\Code\GPT-SoVITS-beta0706> python webui.py Running on local URL: http://0.0.0.0:9874 IMPORTANT:…

ISUP协议视频平台EasyCVR视频融合平台接入各类摄像机的方法

安防视频监控ISUP协议视频平台EasyCVR兼容性强、支持灵活拓展&#xff0c;平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 想要将摄像机顺利接入EasyCVR平台&#xff0c;实现视频监控的集中管理和分发&#x…

to_sql报错not all arguments converted during string formatting

报错&#xff1a; DatabaseError: Execution failed on sql SELECT name FROM sqlite_master WHERE typetable AND name?;: not all arguments converted during string formattingb 报错的代码如下&#xff1a; import pymysql import pandas as pd con pymysql.connect(…

7.机器学习--K-means算法(聚类)

聚类分析是在没有给定划分类别的情况下&#xff0c;根据数据相似度进行样本分组的一种方法。与分类模型需要使用有类标记样本构成的训练数据不同&#xff0c;聚类模型可以建立在无类标记的数据上&#xff0c;是一种非监督的学习算法。 聚类的输入是一组未被标记的样本&#xff…

GPIO子系统层次与数据结构详解

往期内容 本专栏往期内容&#xff1a; Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析inctrl子系统中Pincontroller构造过程驱动分析&#xff1a;imx_pinctrl_soc_info结构体Pinctrl子系统中c…

干货丨通信网络与大模型的融合与协同

本文首发《中兴通讯技术》&#xff0c;2024年4月&#xff0c;第30卷第2期&#xff0c;作者&#xff1a;浙江大学在读本科生任天骐&#xff0c;浙江大学信息与电子工程学院副教授李荣鹏&#xff0c;浙江大学兼任教授、博士生导师张宏纲。边缘计算社区经过授权发布&#xff0c;以…

[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DarkHole:1 通关详解 (附靶机搭建教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

对于一个STM32外设的应用有哪一些?可以列举一个实际的设计案例吗?

STM32 具有丰富的外设&#xff0c;以下是一些常见的应用&#xff1a; 1. **GPIO&#xff08;通用输入输出&#xff09;**&#xff1a; - 控制 LED 灯的亮灭。 - 读取按键状态。 - 与外部数字设备进行通信&#xff0c;如驱动数码管。 2. **USART&#xff08;通用同步异步收发器…

iDP3——改进3D扩散策略以赋能人形机器人的训练:不再依赖相机校准和点云分割(含DP3、Diff-Control、ControlNet详解)

前言 今天10.23日&#xff0c;明天1024则将作为长沙程序员代表&#xff0c;在CSDN和长沙相关部门举办的1024程序员节开幕式上发言&#xff0c;欢迎广大开发者来长工作 生活 考察 创业&#xff0c;​包括我司七月也一直在招聘大模型与机器人开发人员 后天&#xff0c;则将和相关…