swift第二日学习


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

数组的操作

创建数组的方式

  1. 字面量创建(创建空数组时需要提供类型信息,否则报错)
let array = [1,2,3,4]
var array:[Int] = []
  1. 初始化器(有两种方法)
  • [类型]()
  • 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:)移除数组所有元素,保留数组容量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值