您的位置:首页 > 移动开发 > Swift

Swift学习之路 -- 简单值和控制流

2015-11-25 10:26 405 查看
本文学习自《 The Swift Programming Language-swift2.0官方手册 中文版》的电子版

是记录自己的Swift学习历程、整理相关资料便于查看

学习Swift有一个很方便的工具
playground
,可以同步输出执行代码后的结果,不用在每次打印输出

配置:



选择 New File



OK

简单值

使用let声明常量,使用var声明变量

var myVar = 45
myVar = 50


常量只可以赋值一次 也就是说你可以用常量表示某个只需要赋值一次,但需要使用很多次的值

let myLet = 60


练习:创建一个显示类型为Float且初始值为4的常量

let exp : Float = 4


值永远不会被隐式的转换成其他类型,如果需要转换类型,请显式转换

let label = "My age is "
var age   = 22
let ageLabel = label + String(age)


把值转换成字符串更简单的方法:把值写到括号中,且在括号前加反斜杠

let apples  = 3
let oranges = 5
let appleSummary = "I have \(apples) apples"
let fruits = "I have \(apples + oranges) fruits"


练习:使用()表示我的身高为175.5cm

let height : Float = 175.5
let myHeight = "My height is \(height)cm"


创建一个空数组或者字典,使用初始化方法

let emptyArray = [String]()       //表明元素类型
let emptyDict  = [String:Float]() //表明key和Value的类型


使用[]和[:]来创建空数组和空字典 并用下标或key来访问元素

var array = ["1","2","3"]
print(array[0])
array[2] = "change"
print(array[2])

var dict = ["name":"Unique","age":12]
dict["sex"] = "Man"
print(dict)


控制流

使用if和switch来进行条件操作,使用for-in、for、while、和repeat-while来循环

包裹条件和循环变量括号可以省略,但语句体的大括号是必须的

let numberArray = [78,45,12,56,89]
var teamScore   = 0
for score in numberArray {
if score > 50 {
teamScore += 3
} else {
teamScore += 1
}
}
print(teamScore)


在if语句中,条件必须是一个BOOL表达式,不会隐形的与0做对比–这意味着像if score{…}这样的代码将会报错

你可以同时使用if和let来处理值缺失的情况

var optionalString : String? = "Hello"
print(optionalString == nil)

var optionalName :String? = "Unique"
var greeting = "Hello"
if let name = optionalName {
greeting = "Hello,\(name)"
} else {
greeting = "GOOD"
}


练习: 把optionalName改成nil,greeting会是什么?添加一个else语句,当optionalName是nil时给greeting赋一个不同的值

当变量的可选值是nil,条件会判断false,大括号的代码会被跳过。如果不是nil,会将值赋给let后面的常量,这样在代码块中就可以使用这个值了

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 = "The would make a good tea sandwich."
case let x where x.hasSuffix("pepper"):
let vegetableComment = "Is it a spicy \(x)?"
default:
let vegetableComment = "Evenything tastes good in soup."
}


let x where x.hasSuffix(“pepper”) 是说vegetable的值是不是以”pepper”做后缀(也就是结尾) 是就赋值给常量 x

switch执行到匹配的子句之后,程序会退出switch语句,所以不必每个子句结尾都写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 = 0
for (key,numbers) in interestingNumbers {
for number in numbers {
largest = number
}
}
print(largest)


先遍历字典取出每个数组 再遍历数组

使用while来重复运行一段代码直到条件不满足,循环条件也可以写在结尾,保证能至少循环一次

var n = 2
while n < 100 {
n = n * 2
}
print(n)

var m = 2
repeat {
m = m * 2
} while m < 100
print(m)


你可以在循环中使用..<来表示范围,也可以使用传统写法,二者等价

var firstForLoop = 0
for i in 0...4 {
firstForLoop += 1
}
print(firstForLoop)


使用..<创建的范围不包含上界,想要包含的话使用…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift 简单值 控制流