美文网首页
Swift 流程控制 ②

Swift 流程控制 ②

作者: Aliv丶Zz | 来源:发表于2020-07-23 09:27 被阅读0次

1 if-else

let age = 31

if age > 30 {
    print("age > 30");
}else if age>20 {
    print("age>20");
}
  • if 后面的条件可以省略小括号
  • 条件后面的大括号不可以省略

2 while

var num = 10
while num > 0 {
    num -= 1
    print("age:\(num)")
}//打印内容为: 9 8 7 6 5 4 3 2 1 0

3 For - 区间运算符用在数组上

区间类型:
  • 闭区间运算符:a...b, a<= 取值 <=b
  • 半开区间运算符:a..<b, a<= 取值 <b
  • 单侧区间:让区间朝一个方向尽可能的远 2...
  • 字符、字符串也能使用区间运算符,但默认不能使用在for-in中
  • 带间隔的区间值
let range1: ClosedRange<Int> = 1...3
let range2: Range = 1..<3
let range3: PartialRangeThrough<Int> = ...5

let name = ["Alex","Brom","Crol","Drop"]
for i in 0...3{
  print("\(name[i])")
}//Alex  Brom  Crol  Drop

for i in range2{
    print(i)
}// 1 2

for i in name[1...]{
    print(i)
}//Brom  Crol  Drop

let strRange = "aa"..."zz"// aa ab  ac ...... yz zz
let bl = strRange.contains("cc")
print("bl--- \(bl)")  //bl--- true

let hours = 13
let interval = 2
for i in stride(from: 2, to: hours, by: interval) {
    print("i = \(i)")
}//i = 2  i = 4  i = 6  i = 8  i = 10  i = 12

4 switch

使用时注意事项:
  • case、default后面不能用大括号{}
  • 默认可以不写break,并不会贯串后面的条件
  • 如果想实现贯串,则使用fallthrough即可
  • switch 必须保证能处理所有情况
  • case 、default后面至少要有一条语句,如果不想做任何事,加个break即可
  • 如果能保证case已处理所有情况,也可以不必使用default
  • switch也支持Character String类型
  • switch也支持区间匹配 、 元祖匹配
var num = 2
switch num {
    case 1:
        print("num is 1")
        fallthrough
    case 2:
        print("num is 2")
    case 3:
        print("num is 3")
    default:
        break
}
/*num is 1
num is 2*/

enum Answer {
    case right, wrong
}
let answer:Answer = Answer.right
switch answer {
    case Answer.right:
        print("answer is right")
        fallthrough
    case .wrong:
        print("answer is wrong")
}
/* 这里case已经包含枚举里所有类型,所以可以不用使用default。
并且已经确认answer 为 Answer类型,所以也可以直接 .wrong*/

var str = "Jack"
switch str {
    case "Jack":
        fallthrough
    case "Uzi":
        print("A Good ADC")
    default:
        break
}/* 这里使用的fallthrough类似于OC中的
case 1:
case 2:
*/

//值绑定
let point = (2,0)
switch point {
    case (let x , 0):
        print("x = \(x)")
    case (0 , let y):
        print("y = \(y)")
    default:
        break
}


5 where

let point = (2,2)
switch point {
    case let( x , y) where x == y :
        print("x == y")
    case let( x , y) where x == -y :
        print("x == -y")
    case let( x , y) :
        print("(\(x) , \(y)) just a point")
} //x == y

var wNum = [1, -2, 5 , -7 ]
for obj in wNum where obj>0{
    print(obj);
}// 1  5 

相关文章

网友评论

      本文标题:Swift 流程控制 ②

      本文链接:https://www.haomeiwen.com/subject/nsxwkktx.html