let age = 10
if age >= 18 {
print("大学")
} else if age >= 16 {
print("高中")
} else {
print("义务")
}
var num = 3
while num > 0 {
print("num is \(num)")
num -= 1
}
/*
输出:
num is 3
num is 2
num is 1
*/
do-while
,相同逻辑的是repeat-while
num++
,num--
,++num
,--num
等运算符了var num = -1
repeat {
print("num is \(num)")
} while num > 0
/*
输出:num is -1
*/
格式:a...b
(a <= 取值 <= b)
// 常规用法
let words = ["aaa", "bbb", "ccc", "ddd"]
for i in words {
print(i);
}
/*
输出:
aaa
bbb
ccc
ddd
*/
// 区间用法
for i in 1...3 {
print(i, words[i])
}
/*
输出:
1 bbb
2 ccc
3 ddd
*/
// var修饰
for var i in 1...3 {
i += 5
print(i)
}
/*
输出:
6
7
8
*/
// 区间定义常量
let range = 1...3
for i in range {
print(i)
}
/*
输出:
1
2
3
*/
// 区间值自定义
let a = 1
let b = 3
for i in a...b {
print(i)
}
/*
输出:
1
2
3
*/
格式:a..<b
(a <= 取值 < b)
for i in 1..<3 {
print(i)
}
/*
输出:
1
2
*/
// 此处只是示例用法,实际应用时应注意数组越界
let words = ["aaa", "bbb", "ccc", "ddd"]
for i in words[0...3] {
print(i);
}
// 常规闭区间
let words = ["aaa", "bbb", "ccc", "ddd"]
for word in words[0...3] {
// print(word);
}
/*
输出:
aaa
bbb
ccc
ddd
*/
// 左边代表开始,右边代表数组最大长度
for word in words[2...] {
print(word)
}
/*
输出:
ccc
ddd
*/
// 左边代表0,右边闭区间值
for word in words[...2] {
print(word)
}
/*
输出:
aaa
bbb
ccc
*/
// 左边代表0,右边<2
for word in words[..<2] {
print(word)
}
/*
输出:
aaa
bbb
*/
// 无限制,range左边是无穷小的整数
let range = ...5
print(range.contains(7)) // false
print(range.contains(1)) // true
print(range.contains(-2)) // true
-- | 半开 | 闭合 |
---|---|---|
Comparable | Range | ClosedRange |
Strideable(以整数为步长) | CountableRange | CountableClosedRange |
let arr = [1,2,3,4]
arr[...] // [1, 2, 3, 4]
type(of: arr) // Array<Int>
// 半开区间
let rang: Range = 0.0..<1.0
let countableRange: CountableRange = 0..<1
// 闭区间
let closedRange: ClosedRange = 0.0...1.0
let countableClosedRange: CountableClosedRange = 0...1
// 右侧闭区间
let partialRangeThrough: PartialRangeThrough = ...1.0
// 左侧闭区间
let partialRangeFrom: PartialRangeFrom = 0.0...
// 右侧开区间
let partialRangeUpTo: PartialRangeUpTo = ..<1.0
// 左侧闭区间
let countablePartialRangeFrom: CountablePartialRangeFrom = 1...
let stringRange1 = "cc"..."ff"
stringRange1.contains("cb") // false
stringRange1.contains("dz") // true
stringRange1.contains("e") // true
stringRange1.contains("fg") // false
let stringRange2 = "a"..."f"
stringRange2.contains("a") // true
stringRange2.contains("e") // true
stringRange2.contains("g") // false
// \0到~囊括了所有可能要用到的ASCII字符
let characterRange: ClosedRange<Character> = "\0"..."~"
characterRange.contains("G") // true
let startValue = 0
let endValue = 10
let interval = 2
// value取值从startValue开始,每次间隔interval,不超过endValue
for value in stride(from: startValue, through: endValue, by: interval) {
print(value)
}
/*
输出:
0
2
4
6
8
10
*/
// 另外一个方法 to是开区间
public func stride<T>(from start: T, to end: T, by stride: T.Stride) -> StrideTo<T> where T : Strideable
enum HeaderCode {case success, failure, redirect, connect}
let code = HeaderCode.success
switch code {
case .success:
print("success")
case .redirect:
print("redirect")
case .connect:
print("connect")
default:
print("failure")
}
/*
输出:success
*/
enum HeaderCode {case success, failure, redirect, connect}
let code = HeaderCode.success
switch code {
case .success:
print("success")
fallthrough
case .redirect:
print("redirect")
case .connect:
print("connect")
default:
print("failure")
}
/*
输出:
success
redirect
*/
enum HeaderCode {case success, failure, redirect, connect}
let code = HeaderCode.success
switch code {
case .success:
break
case .redirect:
print("redirect")
case .connect:
print("connect")
case .failure:
print("failure")
}
// String
let string = "idbeny"
switch string {
case "idbeny":
print("idbeny")
fallthrough
case "developer":
print("developer")
default:
print("man")
}
/*
输出:
idbeny
developer
*/
// Character
let character: Character = "a"
switch character {
case "a", "A":
print("aaa")
default:
print("not found")
}
/*
输出:aaa
*/
// 区间匹配
let count = 10
switch count {
case 0:
print("zero")
case 1...5:
print("few")
case 10...100:
print("large")
default:
print("not found")
}
/*
输出:large
*/
// 元组匹配
let point = (1, 1)
switch point {
case (0, 0):
print("origin")
case (_, 0):
print("x-axis")
case (0, _):
print("y-axis")
case (-2...2, -2...2):
print("in the box")
default:
print("not found")
}
/*
输出:in the box
*/
_
)忽略某个值let point1 = (2, 0)
switch point1 {
case (let x, 0):
print("on the x-axis and x value of \(x)")
case (0, let y):
print("on the y-axis and y value of \(y)")
case (let x, let y):
print("at (\(x), \(y))")
}
/*
输出:on the x-axis and x value of 2
*/
let point = (1, -1)
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("at (\(x), \(y))")
}
/*
输出:x == -y
*/
// 把所有数加起来
var numbers = [10, 20, -30, -40, 50]
var sum = 0
for num in numbers where num > 0 {
sum += num
}
print(sum)
/*
输出:80
*/
side: for i in 1...4 {
for k in 1...4 {
if k == 3 {
continue side
}
if i == 3 {
break side
}
print("i == \(i), k == \(k)")
}
}
/*
输出:
i == 1, k == 1
i == 1, k == 2
i == 2, k == 1
i == 2, k == 2
*/
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。