Swift学习笔记之逻辑分支与循环体

分支的介绍

  • 分支即if/switch/三目运算符等判断语句
  • 通过分支语句可以控制程序的执行流程

1.if

OC

  • 后面条件必须加()
  • 后面提条件非0即真
  • 如果只有一条if后面的大括号可省略
if(a>0)NSlog(@"yes");

Swift

  • if 后面不加括号
  • if 后面条件必须是明确的Bool类型
  • 即使只有一条指令if后面的大括号亦不可省略

if else 的使用与OC一致,只是条件语句后不加括号;三目运算符和OC基本一致;

2.guard

guard 是swift2.0 新增语法

与if语句非常类似,设计目的是提高程序的可读性

guard语句必须带有else语句,语法如下

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

当条件表达式为false时 ,执行else语句内容,跳转语句一般是return,break,continue,throw

 //如果一个成年人带了省份证才能上网
 func cherk(age:Int hasCard:Bool){
  if age >= 18{
   if hasCard{
   print("老板,开个机")
   }else{
   print("回家拿身份证")
   }
  else{
   print("未成年不能上网")
  }
 }
 func cherkGuard(age:Int hasCard:Bool){
  guard age >= 18 else {
  print("老板,开个机")
  return
  }
  guard hasCard else {
  print("回家拿省份证")
  return
  }
  print("未成年不能上网")
}

2.switch的基本使用

OC中

  • switch后面条件必须加()
  • case后面只能跟一个条件
  • case会有穿透效果
  • 可以不写default
  • default位置可以随便放
  • 在case中定义变量需加大括号,否则作用域会混乱
  • 不能判断对象或浮点类型,只能判断整数

Swift中

  • switch后面条件可以不加()
  • case后面能跟多个条件用逗号隔开
  • case不会有穿透效果 要穿透后面加fallthrough
  • 不可以不写default
  • default位置必须放最后
  • 在case中定义变量不需加大括号
  • 能判断对象或浮点类型,只能判断整数

3.switch的特殊使用

区间匹配

区间概念:

通常描述的是数字区间

半开半闭区间

闭区间

let range = 0...10//闭区间代表区间0~10
let range1 = 0..<10半开半闭区间代表区间0~9

区间操作:

  • 交集:clamped
  • 是否重叠:overipas
  • 判断包含:contains
  • 是否为空:isEmpty

元组匹配

let point = (10,15)
switch point{
  case (0,0)
  print("坐标在原点")
  case (1...10,1...10)//可在元祖中加上区间
  print("坐标X,Y在1...10之间")
  case (,0)//可在元祖中加上区间
  print("坐标X在X轴上")
  default
  print("其它")
 }

值绑定

let point = (10,15)
switch point{
  case (var x,0)
  print("x=\(x)")//point中的x赋值给x
  case (10,var y)
 print("y=\(y)")//point中的y赋值给y
  case var(x,y)
  print("x=\(x) y=\(y)")//point中的xy赋值给xy
  default
  print("其它")
}

根据条件绑定

let point = (100,10)
switch point{
  //只有where后面的条件语句表达式为真财赋值并执行case后面的语句
  case var( x,y) where x > y
  print("x=\(x) y=\(y)")
  default
  print("其它")
}

3.for循环

区间写法

 for _ in 0..<10{ //_代表忽略的意思
 print("xxx")
 }

4.while循环与do while循环

while 循环

var i =10
while i > 0{
i-=1;
print (i)
}

do while 循环

repeat {//swift 中不用do ,do在swift有特殊含义,用于捕捉异常
 i +=1
 print(i)
}while i < 10

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • 详解Swift语言的while循环结构

    Swift 编程语言中的 while 循环语句只要给定的条件为真时,重复执行一个目标语句. 语法 Swift 编程语言的 while 循环的语法是: 复制代码 代码如下: while condition {    statement(s) } 这里 statement(s) 可以是单个语句或语句块.condition 可以是任何表达式.循环迭代当条件(condition)是真的. 当条件为假,则程序控制进到紧接在循环之后的行. 数字0,字符串"0"和"",空列表 l

  • 详解Swift编程中的for循环的编写方法

    for 循环是一个循环控制结构,可以有效地编写来执行的特定次数的循环. 语法 for 循环在 Swift 编程语言的语法是: 复制代码 代码如下: for init; condition; increment{    statement(s) } 下面是在一个循环的流程控制: 初始化 init 步骤首先被执行,并且仅一次.在这一步,可以声明和初始化任何循环控制变量. 只要一个分号出现,不需要一定把一个语句放在这里. 接下来,计算条件.如果为真,则执行循环体.如果是假,循环体不执行,只是在 for

  • Swift流程控制之循环语句和判断语句详解

    Swift提供了所有c类语言的控制流结构.包括for和while循环来执行一个任务多次:if和switch语句来执行确定的条件下不同的分支的代码:break和continue关键字能将运行流程转到你代码的另一个点上. 除了C语言传统的for-condition-increment循环,Swift加入了for-in循环,能更加容易的遍历arrays, dictionaries, ranges, strings等其他序列类型. Swift的switch语句也比C语言的要强大很多. Swift中swi

  • Swift中如何避免循环引用的方法

    内存管理中经常会遇到的一个问题便是循环引用.首先,我们来了解一下iOS是如何进行内存管理的. 和OC一样,swift也是使用自动引用计数ARC(Auto Reference Counteting)来自动管理内存的,所以我们不需要过多考虑内存管理.当某个类实例不需要用到的时候,ARC会自动释放其占用的内存. ARC ARC(Automatic Reference Counting) 是苹果的自动内存管理机制.正如其名:自动引用计数,根据引用计数来决定内存块是否应该被释放. 当一个对象被创建的时候,

  • Swift中循环语句中的转移语句 break 和 continue

    下面通过实例代码给大家介绍了Swift中循环语句中的转移语句 break 和 continue,具体代码如下所示: /** 循环语句中的转移语句 break 和 continue */ let array:Array = [3, 4, 5, 6, 7, 8, 9] for k in array { if k == 5 { print(k) break } } print("--------->") for k in array { if k == 5 { // 结束本次循环,进入

  • Swift中的条件判断、循环、跳转语句基础学习笔记

    一.引言 一种编程语言的强大与否,很大程度上取决于其提供的程序流程控制方案,就如使用汇编语言实现复杂的程序流程是一件痛苦的事情.Swift中提供了许多强大的流程控制语句,例如快速遍历for-in,while循环,repeat-while循环,switch选择等,需要注意的是,在Swift2.2中,for(a;b;c)循环已经被弃用掉,并且Swift中的Switch语句也更加强大,可以处理任意数据类型. 二.for-in循环 配合范围运算符,for-in循环可以用来执行确定次数的循环,示例如下:

  • swift中c风格的for循环执行效率

    今天用swift写了1至99 9999的和,测试其执行效率,但是发现不同代码执行效率大大不同 1. 2. 从结果可以看到,执行速度相差5倍多,若数据再大点,就会很 明显了.这说明不同代码风格执行效率不同,明显使用c风格的for循环执行速度会更快些. 而对于即将出现的正式版swift 3.0废除c风格for循环一事,你怎么看待? 以上所述是小编给大家介绍的swift中c风格的for循环执行效率 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的

  • Swift循环遍历集合的方法总结分享

    前言 之前分享总结过OC循环遍历,文章点击这里:iOS遍历集合(NSArray,NSDictionary.NSSet)方法总结.随着Swift的逐渐完善,自己使用Swift开发的项目经验和知识逐渐积累,是时候总结一下Swift的循环遍历了.相信Swift一定会给你一些不一样的东西,甚至是惊喜,感兴趣的朋友们下面来一起看看吧. 第一种方式:for-in循环 OC延续了C语言的for循环,在Swift中被彻底改造,我们无法再使用传统形式的for循环了 遍历数组和字典: //遍历数组 let iosA

  • Swift学习笔记之逻辑分支与循环体

    分支的介绍 分支即if/switch/三目运算符等判断语句 通过分支语句可以控制程序的执行流程 1.if OC 后面条件必须加() 后面提条件非0即真 如果只有一条if后面的大括号可省略 if(a>0)NSlog(@"yes"); Swift if 后面不加括号 if 后面条件必须是明确的Bool类型 即使只有一条指令if后面的大括号亦不可省略 if else 的使用与OC一致,只是条件语句后不加括号;三目运算符和OC基本一致; 2.guard guard 是swift2.0 新

  • Swift学习笔记之元组(tuples)

    元组 元组(tuples)是由其它类型组合而成的类型.元组可能包含零或多个类型,比如 字符串.整数.字符.布尔以及其它元组.同时请注意,元组是值传递,而不是引用. 在Swift中创建元组的方式很简单,元组类型是用括号包围,由一个逗号分隔的零个或多个类型的列表.例如: let firstHighScore = ("Mary", 9001) 另外,在创建元组时你还可以给元组中的元素命名: let secondHighScore = (name: "James", sco

  • Swift学习笔记之构造器重载

    与函数一样,方法也存在重载,其重载的方式与函数一致.那么作为构造器的特殊方法,是否也存在重载呢?答案是肯定的. 一.构造器重载概念 Swift中函数重载的条件也适用于构造器,条件如下: 函数有相同的名字: 参数列表不同或返回值类型不同,或外部参数名不同: Swift中的构造器可以满足以下两个条件,代码如下: 复制代码 代码如下: class Rectangle {     var width : Double     var height : Double     init(width : Do

  • Oracle学习笔记之视图及索引的使用

    目录 一.视图的使用 1.概念 2.视图分类 3.视图语法 4.视图实例 二.索引 1.索引概念 2.索引分类 2.1.按物理存储方式分类 2.2.按逻辑功能分类 3.索引原则 4.索引语法 一.视图的使用 1.概念 视图概念: 视图是基于一个表或多个表或视图的逻辑表(虚表),本身不包含数据,通过它可以对表里面的数据进行查询. 基表:视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中.那些用于产生视图的表叫做该视图的基表. 视图优点: 简化性 安全性 2.视图分类 视图分为简单视图和复

  • Lua学习笔记之表达式

    前言 这里总结的内容和其它语言的基本类似,所以这里就只是基本的进行总结.不做详细的讲解. 算术操作符 Lua支持常规的算术操作符有:"+"(加法),"-"(减法),"*"(乘法),"/"(除法),"^"(指数),"%"(取模),一元的"-"(负号).所有的这些操作符都用于实数.例如:x^0.5将计算x的平方根,x^3将计算x的3次方. 关系操作符 Lua提供的关系操作

  • DB2 UDB V8.1管理学习笔记(一)

    正在看的db2教程是:DB2 UDB V8.1管理学习笔记(一). DB2 基本概念 在DB2中由上至下的几个概念: 实例(Instance), 数据库(Database), 表空间(TableSpace), 容器(Container) 在一个操作系统中,DB2数据服务可以同时运行多个实例(有别于Oracle在一个系统内只能起一个实例). 数据库定义在实例中,一个实例可以包含多个数据库.在同一个实例中的不同数据库是完全独立的,分别拥有自己独立的系统编目表. 表空间有2种管理方式: DMS(Dat

  • prototype 1.5 & scriptaculous 1.6.1 学习笔记

    最近做otalk,开始是基于prototype1.4的,后来因为我加上了scriptaculous 1.6.1,她要求prototype的版本是1.5的,所以就升级到了1.5,看着demo学习起了scriptaculous的用法. 用法稍后整理,因为在使用过程中很多次效果都不让自己满意,想看代码又看不明白,经过一次折磨,我下定决心,一定要把scriptaculous和prototype的代码看明白! 这里作为我的学习笔记,可能没有什么顺序了逻辑,等到学习完,最后整理 首先是定义类  看着笑笑老师

  • jqGrid 学习笔记整理——进阶篇(一 )

    在浏览导航栏添加所需按钮 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>DEMO</title> <link rel="stylesheet" type="text/css" href="css/jquery-ui.min.css" /> <link rel=&

  • Angular4学习笔记之实现绑定和分包

    本文介绍了Angular4学习笔记之实现绑定和分包,分享给大家,希望对大家有帮助 src目录下的app/app.component.ts文件是一个标准的angular4组件的结构. 上面@component()括号内template属性里用`(这个符号不是单引号,而是键盘1左边.tab键上面的那个符号)包裹的是View,下面export的class部分是Controller. 希望实现的效果长这个样子: 万里长征第一步,先从修改View开始. 修改temlate里的HTML文件,改成下面的样子:

  • JavaScript高级程序设计(第三版)学习笔记1~5章

    第2章,在html中使用JavaScript Html引入外部js脚本 <script type="text/javascript" src="test.js">两个</script>之间不应放脚本,因为并不会被执行</script> <script>标签有一个defer属性可以延迟脚本执行,但是并不保证会按脚本排列顺序执行 建议:将脚本引入放在<body>标签的所有内容之后,而不放在<head>

随机推荐