swift:入门知识之控制流
1、swift语句中的控制流和其他语言大致相同,使用if和switch作为条件控制。使用 for-in、for、while、do-while作为循环。
2、区别之处:小括号不是必须的,但是主体的大括号还是必需的,,,,
3、在if语句中,条件必须是布尔表达式,这意味着if score{...}是错误的,不能隐含的与0比较
4、可以一起使用if和let来防止值的丢失。这些值是可选的。可选的值包含一个值或者包含一个nil来指定值还存不存在。写一个问号"?"在类型后表示值是可选的。
5、在switch-case语句中,switch可以接收任何类型的变量或语句作为条件,不再限制于字符类型、整型等,在一条语句结束后,不需要再写上break,但是最后的defalut不能省略。switch的每一个case至少有一条语句,不允许后面跟一个空语句。
6、可以在循环中保持一个索引,通过".."来表示索引范围或明确一个初始值、条件、增量。用"..<"表示不算上边界,用"..."表示算上边界
7、在控制流中有一个新的类型元组,它可以同时存放很多的值,可以通过"元组名.索引"来获取其中值,也可以遍历获取。当然也可以通过键或者函数获取。
具体举例如下:
类型后面带一个?代表前面如果是nil就执行后面的部分,如果不是nil,后面就不执行,表示后面的数据是可选的
var name:String? = "Tom"
name == nil //false
在if中使用let temp = name,如果temp是nil,后面不执行,相反则执行
//name = nil
if let temp = name{
println("hello \(temp)") //"hello Tom"
}
传统for循环语句,不需要小括号
//传统for循环
let array = [,,,,]
var sum1 =
for var i = ; i<; i++
{
sum1 += array[i]
}
sum1 //输出结果
高级for循环,不需要小括号,判断时的条件必须是布尔类型,需要是具体的算数逻辑或关系逻辑 如>、<、==
//高级for循环
let Allscore = [,,,,]
var sum =
for eachscore in Allscore{
if eachscore > 50 //使用关系判断的比较方式作为判断条件
{
sum +=
}
else
{
sum +=
}
}
sum //输出结果
采用.代替省略的索引,使用..<表示不包括边界,如果包含边界,使用...
//不包括索引5
for j in ..<{
sum1 += array[j]
}
sum1 //输出结果
swicth后的表达式可以是各种类型
case后面可以根很多种情况
case后面用let x where 进行分类
case后面不能用break
defalut不能省略
var color = "lightgray"
var commment = ""
switch color
{
case "red":
commment = "激情"
case "green","blue":
commment = "忧郁"
case let x where x.hasSuffix("gray"):
commment = "灰色心情-\(x)"
default:
commment = "其他心情"
}
commment //输出结果
新类型元组的使用,可以存放多个值,通过"元组.索引"获取值,也可以遍历获取
//新类型:元组
var tuples = ("Tom",)
tuples. = "Jobs" //获取元组中第一个值
tuples. = 23 //获取元组中第二个值
println(tuples) //元组使用
let dictionary = [
"Prime":[,,,,,],
"Fibonacci": [, , , , , ],
"Square": [, , , , ],
]
var largest = 0
//通过for高级循环遍历元组中的数据
for (kind,numbers) in dictionary{
for number in numbers{
if largest < number{
largest = number
}
}
}
largest //输出最大值
where循环语句,也是不用使用小括号了
//where语句的使用(明显的区别就是不适用()括号了)
//方式一
var num =
while num < {
num = num *
}
num
//方式二
var tempNum =
do{
tempNum = tempNum *
}while tempNum <
tempNum
switch语句拓展:
多个模式
最新文章
- 《奥威Power-BI智能分析报表制作方法》精彩回顾
- IBM powerVM VIOS
- 使用.NET FrameWork获取CPU,内存使用率以及磁盘空间
- JSON 之 SuperObject(3): 访问
- LA 3177 长城守卫
- JVM学习笔记(一)------基本结构
- VHD_Update_mount-vhd
- 微信小程序正式发布!这是最全的上手指南
- Hdu 3410 【单调队列】.cpp
- 触动精灵远程Log模块
- 【3D计算机图形学】变换矩阵、欧拉角、四元数
- returned a response status of 403 OR 409
- 关于Bitcoin的分叉之路
- 转-Linux硬件装置和磁盘分区MBR
- poj1416
- day09三目运算
- mongodb安装、配置
- org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)
- java可变参数长度
- linux使用lvresize和resize2fs调整lv大小
热门文章
- 静态数据认证(SDA)与动态数据认证(DDA)的区别
- 前端之JavaScript第三天学习(7)-JavaScript-数据类型
- SQL Server性能优化(1)使用SET函数
- Redis 起步
- idea新建项目完整过程
- Leetcode#59 Spiral Matrix II
- windows下安装php5.2.*,php5.3.*,php5.4.*版本的memcache扩展(转)
- uitableviewcell 和 uibutton
- 使用 Microsoft Word 发布博客文章
- 8086CPU各寄存器的用途