初始化
创建空数组的时候必须携带类型信息
如果内容已经提供了类型信息,比如说作为函数的实际参数或者已经分类了的变量或常 量,你可以通过空数组字面量来创建一个空数组
使用初始化器有两种方式 类型 , Array<类型>()
数组遍历
索引
startIndex 返回第一个元素的位置,对于数组来说,永远都是 0。
endIndex 返回最后一个元素索引 +1 的位置,对于数组来说,等同于count 。
如果数组为空,startIndex 等于 endIndex 。
indices 获取数组的索引区间
判断是否包含指定元素
contains(_:) 判断数组是否包含给定元素
contains(where:) 判断数组是否包含符合给定条件的元素
allSatisfy(_:) 判断数组的每一个元素都符合给定的条件
查找元素
first 返回数组第一个元素(optional),如果数组为空,返回 nil 。
last 返回数组最后一个元素(optional),如果数组为空,返回 nil 。
first(where:) 返回数组第一个符合给定条件的元素(optional)。
last(where:) 返回数组最后一个符合给定条件的元素(optional)。
查找索引
firstIndex(of:) 返回给定的元素在数组中出现的第一个位置(optional)
lastIndex(of:) 返回给定的元素在数组中出现的最后一个位置(optional)
firstIndex(where:) 返回符合条件的第一个元素的位置(optional)
lastIndex(where:) 返回符合条件的最后一个元素的位置(optional)
查找最大最小元素
min() 返回数组中最小的元素
max() 返回数组中最大的元素
min(by:) 利用给定的方式比较元素并返回数组中的最小元素
max(by:) 利用给定的方式比较元素并返回数组中的最大元素
数组添加
append(_:) 在末尾添加一个元素
append(contentsOf: ) 在末尾添加多个元素
在任意位置插入
insert(_????) 在指定的位置插入一个元素
insert(contentsOf: at:) 在指定位置插入多个元素
移除
remove(at:) 移除并返回指定位置的一个元素
removeFirst() 移除并返回数组的第一个元素
removeLast() 移除并返回数组的最后一个元素
popLast() 移除并返回数组的最后一个元素(optional),如果数组为空返回nil 。
removeFirst(:) 移除数组前面多个元素 removeLast(:) 移除数组后面多个元素
emoveSubrange(_:) 移除数组中给定范围的元素
removeAll() 移除数组所有元素
removeAll(keepingCapacity:) 移除数组所有元素,保留数组容量
逆序
reverse() 在原数组上将数组逆序,只能作用在数组变量上。
reversed() 返回原数组的逆序“集合表示”,可以作用在数组变量和常量上,该方法不 会分配新内存空间。
Set 是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。其中,构成 Set 的 这些对象则称为该 Set 的元素。
确定性 :给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一。
互斥性 : 一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。
无序性 : 一个集合中,每个元素的地位都是相同的,元素之间是无序的。
字典储存无序的互相关联的同一类型的键和同一类型的值的集合
字典类型的全写方式 Dictionary<Key, Value>,简写方式 [Key: Value],建议使用简写方式
字典的 key 必须是可哈希的
初始化
初始器方式 Dictionary
简写方式
字面量方式 [key 1: value 1, key 2: value 2, key 3: value 3]
遍历字典
For-In 循环
可以通过访问字典的 keys 和 values 属性来取回可遍历的字典的键或值的集合
Swift 的 Dictionary 类型是无序的。要以特定的顺序遍历字典的键或值,使用键或值的 sorted() 方法
添加或更新元素
使用下标添加或更新元素
使用 updateValue(_:forKey:) 方法添加或更新元素,返回一个字典值类型的可选项值
移除元素
使用下标脚本语法给一个键赋值 nil 来从字典当中移除一个键值对
使用 removeValue(forKey:)来从字典里移除键值对。这个方法移除键值对如果他们存在的 话,并且返回移除的值,如果值不存在则返回 nil 。
合并两个字典
merge(_:uniquingKeysWith:)
基本概念
函数是一个独立的代码块,用来执行特定的任务。通过给函数一个名字来定义它的功能,并且在需要 的时候,通过这个名字来“调用”函数执行它的任务
Swift 统一的函数语法十分灵活,可以表达从简单的无形式参数的 C 风格函数到复杂的每一个形式参 数都带有局部和外部形式参数名的 Objective-C 风格方法的任何内容。形式参数能提供一个默认的值 来简化函数的调用,也可以被当作输入输出形式参数被传递,它在函数执行完成时修改传递来的变 量。
Swift 中的每一个函数都有类型,由函数的形式参数类型和返回类型组成。你可以像 Swift 中其他类 型那样来使用它,这使得你能够方便的将一个函数当作一个形式参数传递到另外的一个函数中,也可 以在一个函数中返回另一个函数。函数同时也可以写在其他函数内部来在内嵌范围封装有用的功能。
定义和调用函数
当你定义了一个函数的时候,你可以选择定义一个或者多个命名的分类的值作为函数的输入 (所谓的形式参数),并且/或者定义函数完成后将要传回作为输出的值的类型(所谓它的返回 类型)
每一个函数都有一个函数名,它描述函数执行的任务。要使用一个函数,你可以通过“调用” 函数的名字并且传入一个符合函数形式参数类型的输入值(所谓实际参数)来调用这个函数。 给函数提供的实际参数的顺序必须符合函数的形式参数列表顺序。
实参标签和形参名
每一个函数的形式参数都包含实际参数标签和形式参数名。实际参数标签用在调用函数 的时候;在调用函数的时候每一个实际参数前边都要写实际参数标签。形式参数名用在 函数的实现当中。默认情况下,形式参数使用它们的形式参数名作为实际参数标签。
所有的形式参数必须有唯一的名字。尽管有可能多个形式参数拥有相同的实际参数标 签,唯一的实际参数标签有助于让你的代码更加易读。
指定实际参数标签
在提供形式参数名之前写实际参数标签,用空格分隔。 如果你为一个形式参数提供了实际参数标签,那么这个实际参数就必须在调用函数的 时候使用标签。
实际参数标签的使用能够让函数的调用更加明确,更像是自然语句,同时还能提供更 可读的函数体并更清晰地表达你的意图。
如果对于函数的形式参数不想使用实际参数标签的话,可以利用下划线( _ )来为 这个形式参数代替显式的实际参数标签。
默认形式参数值
你可以通过在形式参数类型后给形式参数赋一个值来给函数的任意形式参数定义一 个默认值。
如果定义了默认值,你就可以在调用函数时候省略这个形式参数。
可变形式参数
一个可变形式参数可以接受零或者多个特定类型的值。当调用函数的时候你可以利 用可变形式参数来声明形式参数可以被传入值的数量是可变的。可以通过在形式参 数的类型名称后边插入三个点符号( ...)来书写可变形式参数。
传入到可变参数中的值在函数的主体中被当作是对应类型的数组。
输入输出形式参数
可变形式参数只能在函数的内部做改变。如果你想函数能够修改一个形式参数的值,而且你想这些改变在函 数结束之后依然生效,那么就需要将形式参数定义为输入输出形式参数。
在形式参数定义开始的时候在前边添加一个 inout 关键字可以定义一个输入输出形式参数。输入输出形式参 数有一个能输入给函数的值,函数能对其进行修改,还能输出到函数外边替换原来的值。
你只能把变量作为输入输出形式参数的实际参数,在将变量作为实际参数传递给输入输出形式参数的时候, 直接在它前边添加一个和符号 ( &) 来明确可以被函数修改
输入输出形式参数不能有默认值,可变形式参数不能标记为 inout
原文:https://www.cnblogs.com/liuxiaokun/p/12684677.html