阅读iBook上的The Swift Programming Language (Swift 2.1) 以及网络上的各种资料进行学习,中英对照可以帮助我们更好的进行理解
//同时使用if let来防止值的丢失 通过在类型后面一个?来表示它是一个可选值
var name:String?=nil
var optionalName:String?="Scott"
//optionalName=nil
var greeting="hello"
if let names=optionalName{
greeting="hello\(names)"//如果可选值时nil则跳过花括号,反之会将其赋值给let后面的常量,且可以在代码块内部使用
}
print(greeting)
//注:这里不太理解,好像是关于空指针的问题
//另一种方法用来保持变量不丢失 是通过设置一个默认值 然后用双问号??来表示,如果前面是nil则用默认值代替它
//let nikName:NSString?="Candy"
let nikName:NSString?=nil
let fullName="Scott"
let informalGreeting="Hi \(nikName ?? fullName)"//这个在传值的时候非常方便,省去了判断和赋值的繁琐,交给系统去处理
print(informalGreeting)
//使用switch和case进行判断 switch支持各种数据类型
let vegetable="red pepper"
switch vegetable{
case "celery":
print("A")
case "cucumber","watercress":
print("B")
case let x where x.hasSuffix("red pepper"):
print("C")
print(x)
default:
print("D")
}//在匹配到case的时候它会自动跳出 不必额外写break
//使用for-in来迭代字典中的元素,关于迭代:递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。
let interestingNumbers=["prime":[2,3,5,7,11,13],"square":[1,4,9,16,25],"fibonacci":[1,1,2,3,5,8]]
var largest=0
for (kinds,numbers)in interestingNumbers{
for number in numbers{
if number > largest{
largest=number
print(largest)
}
}
}
//使用while来重复执行一个代码块 也可以吧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 firstLoop=0
for i in 0..<4{ //使用..<不包含最大边缘值4 使用...则同时包含范围两边的值0,4
firstLoop += i
}
print(firstLoop)
var secondLoop=0
for var i=0;i<4;++i{
secondLoop+=1
}
print(secondLoop)
//使用func来声明一个函数 通过函数名和参数列表来执行函数 使用->区别出返回的类型
func greet(name:String,day:String)->String{
return "Hello \(name),today is \(day)"
}
greet("Bob", day: "Tuesday")
print(greet("bob", day: "Monday"))
//使用tuple(元组)来返回多个值 tuple的元素可以使名字或数字
func calculateStatistics(scores:[Int])->(min:Int,max:Int,sum:Int){
var min=scores[0]
var max=scores[0]
var sum=scores[0]
for score in scores{
if score > max{
max=score
}
else if score < min{
min=score
}
sum+=score
}
return (min,max,sum)
}
let statistics=calculateStatistics([5,3,100,3,9])
//print(statistics.max)
//print(statistics.min)
print(statistics.sum)
print(statistics.2)
//其中还有好多不理解的地方,慢慢深入学习,定会拨开云雾见晴天