Swift简明教程(二)流程控制
来源:互联网 发布:linux怎么进入root 编辑:程序博客网 时间:2024/05/16 17:50
Swift简明教程(二)流程控制
使用if
和switch
进行条件判断,for-in
、for
、while
和do-while
进行循环。条件判断时的圆括号时可选的,但是if
或者循环体的花括号{}
时必须的。
let individualScores = [75, 43, 103, 87, 12]var teamScore = 0for score in individualScores { if score > 50 { teamScore += 3 } else { teamScore += 1 }}teamScore
if
语句中,判断条件必须时布尔表达式,也就是说if score { ... }
的形式是错误的,它并不会隐式的与0进行比较。
你可以使用if
和let
一起来判断值是否缺失。这些值被看作是选项(Optionals)。一个选项包含一个值或者nil
来表示是否缺失内容。在类型后面添加?
标记一个值是一个选项。
var optionalString: String? = "Hello"optionalString == nilvar optionalName: String? = "John Apppleseed"var greeting = "Hello!"if let name = optionalName { greeting = "Hello, \(name)"}
试验将optionalName
的值改为nil
,看一下能不能得到问候。在if
后添加else
语句,使得optionalName
为nil
的时候打印不同的问候语句。
如果选项的值为nil
,条件为false
,if
后的语句被跳过。否则选项的值被赋值给let
后的常量,并且该常量的作用域为花括号里面。
Swift里的switch
语句支持任意数据类型以及比较操作,而不是被限制为整数的相等。
let vegetable = "red pepper"switch vegetable { case "celery": let vegetableComment = "Add some raisins and make ants on a log." case "cucumber", "watercress": let vegetableComment = "That would make a good tea sandwich." case let x where x.hasSuffix("pepper"): let vegetableComment = "Is it a spicy \(x)?" default: let vegetableComment = "Everything tasts good in soup."}
试验尝试移除default
语句,看看有什么错
执行完switch
的一个case
后,程序会从switch
语句中跳出,而不会继续执行下一个case
语句,因此在Swift中不需要显式的使用break
跳出每一个分支。
在使用for-in
进行迭代的时候,每次迭代都会返回一个键值对:
let interestingNumbers = [ "Prime": [2, 3, 5, 7, 11, 13], "Fibonacci": [1, 1, 2, 3, 5, 8], "Square": [1, 4, 9, 16, 25],]var largest = 0for (kind, numbers) in interestingNumbers { for number in numbers { if number > largest { largetst = number } }}
largest
试验增加一个变量,记录最大值所在的分类
while
会一直循环执行,直到判断条件发生变化。如果使用do-while
,循环体至少会执行一次。
var n = 2while n < 100 { n = n * 2}nvar m = 2do { m = m * 2} while m < 100m
在for
循环中通过索引来控制循环,其中..
用来创建一个索引的范围,下面两个循环是一样的效果
var firstForLoop = 0for i in 0..3 { firstForLoop += i}firstForLoopvar secondForLoop = 0for var i = 0; i < 3; ++i { secondForLoop += 1}secondForLoop
使用..
(两点)创建的范围不包括最大值,而...
(三点)创建的范围包含最大值。
0 0
- Swift简明教程(二)流程控制
- swift语言基础(二)流程控制
- 简明C语言教程(九)流程控制
- 《简明python教程 》总结(二)-- 字符串、对象、控制流
- Swift简明教程一(数据类型)
- Swift简明教程(七)泛型
- Swift教程(二)
- 流程控制(二)
- NumPy简明教程(二、数组3)
- NumPy简明教程(二、数组1)
- NumPy简明教程(二、数组2)
- 简明python教程学习笔记(二)
- NumPy简明教程(二、数组3)
- Linux-git简明教程(二)
- NumPy简明教程(二、数组2)
- NumPy简明教程(二、数组1)
- 《简明Python教程》学习(二)
- NumPy简明教程(二、数组3)
- 使用V7包后,设置ActionBar的title等的属性
- GXP1165--IP电话机中的性价比之王
- 安卓网页html/图片查看器开发——张泽华老师的些许错误
- 安装debian6问题
- java生成EXCEL表格(POI vs JXL)
- Swift简明教程(二)流程控制
- SVN冲突原因与冲突解决
- ubuntu远程桌面到Windows
- iOS开发XCODE5 SVN配置 使用办法
- Java同步、异步相关知识点
- 关于《积累》
- Linux 安装JDK
- 引用调用
- iBatis自动生成的主键 返回主键 (Oracle,Sql Server,Mysql)