/// if条件句 可选值 ///
var str: String? = "hello"//这样的写法是可选值 也就是str 的只是可以改成nil什么的
//print(str == nil)
str = nil;
var greeting = "haha"
if let name = str {//如果可选值为nil,条件判断为false 大括号中的代码会被跳过,如果不是nil,则会赋值给let后面的常量,这样代码中就可以使用这个值了
greeting = "hehe,\(name)"
}else {
greeting = "heihei"
}
print(greeting)
let name : String? = nil //可选值
let name2 : String = "wpy"// 默认值
let name3 = "Hi \(name ?? name2)"//如果可选值缺失的话,可以用默认值来代替
print(name3)
/// switch /
//switch 支持 任意类型的数据 以及 各种比较操作 (已不再仅仅是整数以及测试相等了)
let st = "cucumber popper"
switch st {
case "colery":
print("1111");
//break
case "cucumber","watorcress":
print("222")
//break
case let y where y.hasPrefix("cucumber")://他将匹配等式的值赋值给常量y
print("ta is \(y)")
case let x where x.hasSuffix("popper")://运行switch 中一旦匹配到的字句之后,程序就会停止,并不会在往下运行,所以就不要break 了
print("it is \(x)")
//break
default://没有default 会报错
print("ok")
}
/// //for 循环///
///单循环数组
let arr = [75,43,103,87,12]
var score = 0
for s in arr {
if s > 50 {
score += 3
} else {
score += 1
}
}
print(score)
//双循环 字典
let dic = [
"P" : [2,3,5,7,11,13],
"F" : [1,1,2,3,5,8],
"S" : [1,4,9,16,25],
]
var max = 0
var type:String = ""
//用for-in 来遍历字典需要两个变量来表示每个键值对 字典是一个无序的集合 所以它的键值任意顺序迭代结束
for (key,values) in dic {
for number in values{
if number > max {
max = number
type = key
}
}
}
print(type + "\(max)")
//循环中使用 ..< 表示范围 也可以用传统的方法
var wpy1 = 0
for i in 0..<4 { //不包括上界
wpy1 += i
}
print(wpy1)
var wpy2 = 0
for i in 0...4 { //包括上界
wpy2 += i
}
print(wpy2)
//传统的方法 单系统会推荐你用 上面的方法
var wpy3 = 0
for var i = 0;i < 4 ;i+=1 {
wpy3 += i
}
print(wpy3)
while /
var n = 1
var sum = 0
while n < 100 {
sum += n
n += 1 //n ++ 会警告
}
print(sum)
var sum1 = 0
repeat {
sum1 += n;
} while n < 0 //相当于do-while 不管是否符合条件 都会执行一次
print(sum1)