返回

Swift实用小册05:条件、循环和控制转移语句的使用

发布时间:2022-09-23 19:23:18 165
# php# 后端# ios# 数据# 工具

在本章中,你将学会条件、循环和控制转移语句等控制流的常见使用方法。

前言

和​​Apple​​​官网或者网上分享的教程类文章不同,我将以实际开发角度讲述​​Swift​​语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。

这同时也是对自己学习​​Swift​​语言过程的知识整理。

如有错误,以你为准。

我们新建一个​​PlayGround​​​文件,命名为​​SwiftControl​​。

Swift实用小册05:条件、循环和控制转移语句的使用_ios

条件语句-if语句

​if​​​条件判断语句是​​Swift​​​控制流条件判断语句中最为常见的一种类型,当情况是​​false​​​或者​​true​​​的时候,业务上会做如何处理,这就需要使用到​​if​​条件判断语句。示例:

// if语句的使用

var message = ""

if message.isEmpty {
Text("请输入内容")
.foregroundColor(Color(UIColor.placeholderText))
.padding(15)
}

上述代码中,常出现在​​TextEditor​​​多行文本框的场景,由于​​TextEditor​​​多行文本框没有提供​​placeholder​​提示文字的修饰符,因此我们自己需要实现提示文字的交互。

当我们​​TextEditor​​​多行文本框内文字​​message​​​为空,即​​message.isEmpty​​​为​​true​​​,我们就展示​​Text("请输入内容")​​提示文字。

如果是多条件判断的情况,我们可以使用​​if-else、if-else if - else​​从句来实现。

我们以石头剪刀布的游戏为例:

// 规则判定

if leftNumber == rightNumber {
self.winMessage = "平局!"
} else if leftNumber == 1 && rightNumber == 2 {
self.winMessage = "左边赢了!"
} else if leftNumber == 2 && rightNumber == 3 {
self.winMessage = "左边赢了!"
} else if leftNumber == 3 && rightNumber == 1 {
self.winMessage = "左边赢了!"
} else {
self.winMessage = "右边赢了!"

Swift实用小册05:条件、循环和控制转移语句的使用_iOS_02

上述代码中,我们实现声明好了两个随机数​​leftNumber​​​、​​rightNumber​​。

我们定义随机数的范围为​​1、2、3​​​对应​​石头、剪刀、布​​,如果两者相等,则双方为平局,如果左边是1石头,右边是2剪刀,或者左边1是剪刀,右边是3布,或者左边是3布,右边是1石头,那么都是左边赢了,除此之外的情况就是右边赢。

PS: 石头剪刀布项目的图片部分来源于网络,如有侵权,请联系删除。

石头剪刀布项目的代码和逻辑部分最终解释权归属于本人。

石头剪刀布项目仅作开源分享案例使用。

条件语句-Switch语句

​Switch​​​语句和​​if​​​语句很类似,不过使用起来更加简单。如果我们有若干种情况,且不同情况得出对应的值,这种业务场景下,我们建议使用​​Switch​​语句。示例:

//Switch语句的使用

enum DragState{
case dragging
case pressing

var isDragging: Bool {
switch self {
case .dragging:
return true
case .pressing:
return false
default:
print("没有点击也没有拖动")
}
}

上述代码中,我们声明了一个枚举类​​DragState​​手势拖动的类型,然后我们判断是否是拖动手势。

如果​​case​​​是​​dragging​​​拖动手势,则返回​​isDragging​​​的值为​​true​​​。如果​​case​​​的值是​​pressing​​​点击手势,则​​isDragging​​​的值为​​false​​​。如果没有点击也没有拖动,那么我们使用​​default​​​默认分支,​​print​​输出一段信息。

在实际业务中,特别是​​Banner​​​轮播图的交互中,常常就有点击、拖动手势混合使用,这时候我们就可以​​Switch​​语句来实现条件判断的逻辑。

另外,​​Switch​​​语句在​​Swift​​​的应用和​​OC​​​不同,不需要添加​​break​​​语句来跳出条件分支,​​Switch​​​语句只要匹配到了​​case​​​就会自动终止,所以在​​Swift​​​语言中,​​break​​语句不是必须的。

循环语句-For-In语句

在上一章数组的遍历中,我们使用了​​List​​​和​​ForEach​​​循环遍历展示了数组中的数据,这里我们学习下另一种循环的方式​​For-In​​循环。示例:

//For-In语句的使用

var category = ["后端" , "前端", "Android", "iOS" , "人工智能", "开发工具", "代码人生", "阅读"]

for categoryItem in category {
print("\(categoryItem)")
}

上述代码中,我们声明了一个​​category​​​类目的变量数组,然后通过​​For-In​​​循环的方式遍历所有元素,并输出展示。这里我们使用了​​categoryItem​​​类目项目的临时常量,如果在业务的代码中用不到这个常量,我们也可以直接用“​​_​​”代替。

和​​ForEach​​循环的方式类似,我们也可以使用区间操作符作为遍历的对象,示例:

//For-In语句的使用

for index1 in 1...5 { print("\(index1)") } //闭区间
for index2 in 1..<category.count { print("\(index2)") } //半开区间

循环语句-While语句

​While​​​语句更多是做循环判断使用,​​While​​​语句会一直循环到满足条件为止不再循环,而对比​​if​​​语句,​​if​​是判断一轮内部所有结果后退出。示例:

//While语句的使用

var number1 = 1
var number2 = 10

while number1 <= number2 {
number1 += 1
}
print("number2小于number1")

上述代码中,我们声明了​​2​​​个数字变量,当​​number1​​​小于或等于​​number2​​​时,​​number1​​​自增,直到​​number2​​​小于​​number1​​时,系统输出一段文字。

如果我们只想判断一次就结束,不用循环判断,我们可以使用​​repeat​​函数,示例:

//While语句的使用

repeat{
number1 += 1
} while number1 <=

上述代码中,​​number1​​​在循环判断中只自增了一次,那么输出结果为​​1​​。

控制转移语句-continue语句

在大学​​C语言​​​课程中,我们学习过​​continue​​​语句,而在​​Swift​​​语言中,​​continue​​​的逻辑沿用了和其他语言​​相同​​的逻辑,即跳过本次循环,继续执行下一个循环。示例:

//continue语句的使用

var number3 = 1
var number4 = 5

for i in number3...number4 {
if i == 2

上述代码中,我们通过​​For-In​​​语句,遍历​​1~10​​​的所有数字,再通过​​if​​​语句判断遍历循环的元素有没有​​2​​​,如果有​​2​​​,则跳过​​2​​,继续循环遍历。

最终的结果会打印输出“​​1、3、4、5​​”。

通过​​continue​​​语句,我们也可以用来​​过滤​​数组中的特定元素,示例:

//continue语句的使用

var category2 = ["后端" , "前端", "Android", "iOS" , "人工智能", "开发工具", "代码人生", "阅读"]

for categoryItem2 in category2 {
switch categoryItem2 {
case "iOS":
continue
default:
print("\(categoryItem2)")
}
}

上述代码中,我们遍历​​category2​​​数组中所有元素,如果数组中的值为“​​iOS​​​”,那么就会跳过,最后输出的结果是“​​后端、前端、Android、人工智能、开发工具、代码人生、阅读​​”。

控制转移语句-break语句

​break​​​语句和​​continue​​​语句的功能都是跳出循环,但​​break​​​语句不同的是,​​break​​语句是直接终止后面的所有循环了,也就是我只要匹配到值,就不往下走了。示例:

//break语句的使用

var category3 = ["后端" , "前端", "Android", "iOS" , "人工智能", "开发工具", "代码人生", "阅读"]

for categoryItem3 in category3 {
switch categoryItem3 {
case "iOS":
break
default:
print("\(categoryItem3)")
}
}

上面的代码中,我们输出的结果是“​​后端、前端、Android​​”。

Swift实用小册05:条件、循环和控制转移语句的使用_switch语句_03

以上就是本章的全部内容。

快来动手试试吧!

如果本专栏对你有帮助,不妨点赞、评论、关注~

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线