Swift编程语言教程之控制流
作者:本站整理 时间:2015-04-09
编程时,合理地使用控制流进行循环、迭代可以起到事半功倍的作用,短短地几行代码便可以实现某种功能,让整个代码显得更加简洁高效。下面我们就来学习有关Swift控制流的知识点。
使用 if 和 switch 作为条件控制。使用 for-in 、 for 、 while 、 do-while 作为循环。小括号不是必须的,但主体的大括号是必需的。
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
if score > 50{
teamScores += 3
}
else {
teamScores += 1
}
}
teamScore
在if语句中,条件必须是布尔表达式,这意味着 if score { ... } 是错误的,不能隐含的与0比较。
你可以一起使用 if 和 let 来防止值的丢失。这些值是可选的。可选值可以包含一个值或包含一个 nil 来指定值还不存在。写一个问号 "?" 在类型后表示值是可选的。
var optionalString: String? = "Hello"
optionalString == nil
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, (name)"
}
练习
改变 optionalName 为 nil 。在问候时会发生什么?添加一个 else 子句在 optionalName 为 nil 时设置一个不同的值。
如果可选值为 nil ,条件就是 false 大括号中的代码会被跳过。否则可选值未包装并赋值为一个常量,会是的未包装值的变量到代码块中。
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: //by gashero
let vegetableComment = "Everything tastes good in soup."
}
练习
尝试去掉 default ,看看得到什么错误。
在执行匹配的情况后,程序会从switch跳出,而不是继续执行下一个情况。所以不再需要break跳出switch 。
可使用 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 = 0
for (kind, numbers) in interestingNumbers{
for number in numbers {
if number > largest
{
largest = number
}
}
}
Note
添加另一个变量来跟踪哪个种类中的数字最大,也就是最大的数字所在的。
使用 while 来重复执行代码块直到条件改变。循环的条件可以放在末尾来确保循环至少执行一次。
var n = 2
while n < 100
{
n = n * 2
}
n
var m = 2
do {
m = m * 2
}
while m < 100
m
你可以在循环中保持一个索引,通过 ".." 来表示索引范围或明确声明一个初始值、条件、增量。这两个循环做相同的事情:
var firstForLoop = 0
for i in 0..3 {
firstForLoop += i
}
firstForLoop
var secondForLoop = 0
for var i = 0; i < 3; ++i {
secondForLoop += 1
}
secondForLoop
使用 .. 构造范围忽略最高值,而用 ... 构造的范围则包含两个值。
相关文章
相关推荐
-
腾讯云会展官方版 V1.0
-
爱壁纸HD v3.0.9官方版
-
XMind 8 Pro linux版 v3.7.0
-
Office2010 四合一 绿色精简版
-
智百盛汽车美容会员管理系统PC版 v8.0
-
DaVinci Resolve Studio中文版 v12.5.4
-
360安全桌面 2.7.0.1105 正式版(电脑壁纸)
-
Wise Disk Cleaner中文版 v9.41
-
Notepad++简体中文版
-
微小宝客户端官方版 v1.9.8
-
好股道开放式研究服务平台V2.3.5 (证券交易软件
-
萨博票据通2016企业版 v6.91
-
土拨鼠一键重装系统官方版 v1.0
-
Corel VideoStudio Pro x10 简体中文版
-
Firefox火狐浏览器for mac正式版 v52.0.2
-
PotPlayer V1.6.57021简体中文版(网络播放器)