swift第二日学习
循环操作
1.使用stride函数来跳过不想要的标记区间,例如:
For a in stride(from: 0,to: 50, by: minuteInterva)//minuteInterva是元组名称
2.switch语句不需要添加break,且必须包含完整的情况(多数情况下需要添加default)若想要多个case表示一种情况,则需要填写case:”1”,case2:”2”:。除此之外外,switch的语句还可以实现一个区间中的匹配,元组的匹配
3.当switch语句需要贯穿行为时,可以再每个case末尾添加一个fallthrough关键字
4.语句标签,可以用语句标签给U型你换语句或者条件语句做标记,在break语句之后加上标签跳转到标记的语句
break whileloop
guard的学习
在swift中guard的花括号中间所跟随的语句在条件为false时会执行,而之后的语句则为true时执行,不过guard用于函数中(需要在else体中return返回)
let a = 0;
guard let a == 0 else{
return;//这里是false所执行的位置
}
let b = 2;//这里是true所执行的位置
模式和模式匹配
- 通配符模式,通常由一个下划线构成,用于匹配并忽略任何值
for _ in 1...3 where y== 0 {
// .....
}
- 值绑定模式,将匹配到的值绑定给一个变量或者常量
let point = (3,2)
switch point {
//将point中的元素绑定到X和Y
case let (x,y):
print(x,y)
- 表达式模式,只出现在switch语句中的case标签中,使用~=运算符与输入表达式的值进行比较、
let point = (1,2);
swtch point {
case (0,0):
print("0,0")
case (-2...2,-2...2):
print("\(point.0) ,\(point.1) is near the origin)
default:
print("The point is at.")
以上代码最后输出的结果为1,2,is near the origin
数组的操作
创建数组的方式
- 字面量创建(创建空数组时需要提供类型信息,否则报错)
let array = [1,2,3,4]
var array:[Int] = []
- 初始化器(有两种方法)
- [类型]()
- Array<类型>()
var myArray = [String]()
var myArray2 = Array<String>()
let numbers = [Int](0...7)//此行代码可以生成一个从0到7的数组
let persons = ["zhangsan":27,"lisi":28]
let names = [String](persons.keys)//此行代码可将persons的所有key 生成一个数组
初始化器的一些参数:repeating:,count: 表示重复多少遍的创建
访问和操作数组
数组遍历
- For in
- forEach方法
1.无法使用break或者continue跳出或跳过循环
2.使用return只能退出当前一次的循环体
let numbers = [Int](2...7)
numbers.forEach{ (num) in
print(num)
}
- 同时得到索引和值 enumerated()
let numbers = [Int](2...7)
for (index, num) in numbers.enumerated(){
print("the index is: \(index)")
print(num * 10)
}
- 使用Iterator遍历数组
let numbers = [Int](2...7)
var numIterator = numbers.makeIterator()
while let num = numIterator.next(){
print(num * 10)
}
数组的索引
- startIndex返回第一个元素的位置
- endIndex返回最后一个元素+1的位置,对数组来说,等同于count
- 如果数组为空,startIndex等于endIndex
- indices可以获取数组的索引区间
let numbers = [Int](2...7)
for i in numbers.indices{
print(numbers[i] * 10)
}
数组的查找操作
- contains(_:)判断是否包含指定元素
- contains(where:)判断数组是否包含给定条件的元素
- allSatisfy(_:)判断数组的每一个元素是否符合给定的条件
print(array.allSatisfy({ $0 > 10}))
- first返回数组的第一个元素(optional)
- last返回数组的最后一个元素(optional)
- first(where:)返回数组第一个符合条件的元素(optional)
let array = [1,22,3]
print(array.firstIndex(of:1))//输出Optional(0)
- last(where:)返回数组最后一个符合条件的元素(optional)
- firstIndex(of:)返回给定的元素在数组中出现的第一个位置(optional)
- lastIndex(of:)返回给定的元素在数组中出现的最后一个位置(optional)
- min()返回最小元素 max返回最大(optional)
- min(by: )利用给定的方式比较元素返回最小元素(optional)
数组的添加和删除
- append(_:)在末尾添加一个元素
- append(contentsOf:)在末尾添加多个元素
- insert(_:at:)在制定的位置插入一个元素
- insert(constentsOf:at:)在指定的位置插入多个元素
- remove(at:)移除并返回指定位置的一个元素
- removeFirst()移除并返回数组的第一个元素
- popFirst()移除并返回数组的第一个元素(optional)
- removeSubrange(_:)移除数组中给定范围的元素
var chars: [Character] = ["a","b","c"]
chars.removeSubrange(1...2)
print(chars)//输出["a"]
- removeAll()移除数组所有元素
- removeAll(keepingCapacity:)移除数组所有元素,保留数组容量