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

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

image.png

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


前言


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

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


如有错误,以你为准。


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

image.png

条件语句-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.isEmptytrue,我们就展示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 = "右边赢了!"
}


image.png


上述代码中,我们实现声明好了两个随机数leftNumberrightNumber

我们定义随机数的范围为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手势拖动的类型,然后我们判断是否是拖动手势。

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

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

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


循环语句-For-In语句


在上一章数组的遍历中,我们使用了ListForEach循环遍历展示了数组中的数据,这里我们学习下另一种循环的方式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 <= number2


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


控制转移语句-continue语句


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


//continue语句的使用
var number3 = 1
var number4 = 5
for i in number3...number4 {
    if i == 2 {
        continue
    }
    print(i)
}


上述代码中,我们通过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)")
    }
}

image.png

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

快来动手试试吧!

相关文章
|
7月前
|
Swift iOS开发
14 在Swift中进行循环控制
在Swift中进行循环控制
49 0
|
4月前
|
Swift
在Swift编程语言中,Repeat-While循环
在Swift编程语言中,Repeat-While循环
18 2
|
4月前
|
Swift
在Swift编程语言中,`while`循环
在Swift编程语言中,`while`循环
107 1
|
4月前
|
Swift 索引
在Swift编程语言中,`for-in`循环
在Swift编程语言中,`for-in`循环
29 3
|
Swift
Swift - 用装有控制器name的数组for循环批量创建控制器(string转UIViewController)
Swift - 用装有控制器name的数组for循环批量创建控制器(string转UIViewController)
74 0
|
数据安全/隐私保护 Swift
Swift实用小册26: 正则表达式的使用
在本章中,你将学会常用的正则表达式的使用方法。
254 3
Swift实用小册26: 正则表达式的使用
|
存储 Swift
Swift实用小册25: 高级运算符之位运算符的使用
在本章中,你将学会高级运算符的位运算符的使用方法。
207 0
Swift实用小册25: 高级运算符之位运算符的使用
|
数据安全/隐私保护 Swift 索引
Swift实用小册24: AccessControl访问控制的使用
在本章中,你将学会AccessControl访问控制的使用方法。
149 0
Swift实用小册24: AccessControl访问控制的使用
|
Swift
Swift实用小册23: ARC自动引用计数机制的使用
在本章中,你将学会ARC自动引用计数机制的使用方法。
150 0
Swift实用小册23: ARC自动引用计数机制的使用
|
Swift
Swift实用小册22: OpaqueTypes不透明类型的使用
在本章中,你将学会OpaqueTypes不透明类型的使用方法。
243 0
Swift实用小册22: OpaqueTypes不透明类型的使用