1.数组(Array)描述
文档描述:
数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。
Swift 中数组的完整写法为 Array< Element >,其中 Element 是这个数组中唯一允许存在的数据类型。也可以使用像 [Element] 这样的简单语法。
2.基础语法及使用
2.1.1 通过类型推断
var a = [1,2,3,4]
print(type(of: a))
print(a)
/*输出结果为:
Array<Int>
[1, 2, 3, 4]
*/
通过以上代码我们可以得知:a是一个Int类型的array数组,这里的Int类型是通过类型推断所推断出来的
2.1.2 明确指定类型
有的条件下会需要直接定义好数据类型,例如我们定义一个String类型的数组:
var b:[String] = ["hello","world"]
print(type(of: b))
print(b)
/*输出结果:
Array<String>
["hello", "world"]
*/
需要注意的是,这里在指定了类型之后,后边的类型需要与定义的数据类型相匹配,swift并不会帮你自动转化为String类型
2.1.3 通过数组类型进行定义
跟前者其实差不多,也可以指定类型
var c:Array<Double> = [1.5,2.5,3.2]
print(type(of:c))
print(c)
/*输出结果
Array<Double>
[1.5, 2.5, 3.2]
*/
同样,你也可以定义一个空的数组:
var array:Array<Int> = []
print(type(of:array))
print(array)
/*输出结果
Array<Int>
[]
*/
2.1.4 取值、修改值
以2.1.3为例,根据索引取值与修改值:
print(c[0],c[1],c[2])
// 输出结果 1.5 2.5 3.2
c[0] = 99.9
print(c[0])
//输出结果 99.9
2.1.5 通过初始化构造器定义
有的时候我们需要一个可变长度的且可以为空的数组
var array02 = [Int]()
print(type(of:array02))
print(array02)
/*输出结果
Array<Int>
[]
*/
什么叫可变长度,简单的来说就是我们可以往里边添加数据
//使用append在末尾添加数据
array02.append(1)
array02.append(2)
array02.append(99)
print(array02)
//输出结果 [1, 2, 99]
通过Array初始化器,生成一个,初始值为“待添加”,长度为3的数组:
var arr2 = Array(repeating: "待添加", count: 3)
print(arr2)
//输出结果 ["待添加", "待添加", "待添加"]
小结:如果是let类型的话,不可以改变数组的长度和数据,但是可以取值
2.1.6 在后边拼接一个数组
这里可以直接使用+号
var arradd = ["Java","Python","C"]
print(arradd)
arradd += ["C#",".Net"]
print(arradd)
/* 输出结果
["Java", "Python", "C"]
["Java", "Python", "C", "C#", ".Net"]
*/
2.1.7 在指定位置添加一个数组
参照的上一个 2.1.6
arradd.insert("Swift", at: 2)
print(arradd)
// 输出结果
//["Java", "Python", "Swift", "C", "C#", ".Net"]
3.扩展用法
3.1 判断是否存在于数组中
定义的内容参照2.1.6,存在即为True,不存在即为False
print(arradd.contains("Swift"))
//输出结果true
3.2 替换一个区间的数组
定义的内容参照2.1.6
arradd.replaceSubrange(1...3, with: ["win","macOS","iOS"])
print(arradd)
//输出结果 ["Java", "win", "macOS", "iOS", "C#", ".Net"]
3.3 删除指定区域的数组
定义的内容参照2.1.6,和获取值一样,这里同样通过索引删除对应的值
arradd.remove(at: 0)
print(arradd)
//["win", "macOS", "iOS", "C#", ".Net"]
//Java被删除了
3.4 将数组内容排序
这里就采用倒序
var value = ["A","C","B","H","I","F","D","E","J","G","K"]
value.sort(by:{s1,s2 -> Bool in
if s1>s2 {
return true
}else{
return false
}
})
print(value)
//输出结果["K", "J", "I", "H", "G", "F", "E", "D", "C", "B", "A"]
3.5 将数组内容过滤
定义内容采用3.4当中的value
var new_val = value.filter({(item) -> Bool in
if item != "D"{ //过滤字母D
return true
}else{
return false
}
})
print(new_val)
//数据结果 ["K", "J", "I", "H", "G", "F", "E", "C", "B", "A"]
//D被过滤掉了
3.6 数组比较
//数组比较
var b1 = [1,2,3,4]
var b2 = [1,2,3,4]
if b1 == b2 {
print("相等")
}else{
print("不等")
}
//输出结果:相等
3.7 遍历数组的几种方式
直接遍历:
var eq = [1,2,3,4,5,6,7]
for item in eq {
print(item)
}
运用区间运算符,选择遍历范围
for item2 in eq[0...3] {
print(item2)
}
通过索引遍历
for index in (0..<eq.count) {
print(index)
}
本节内容仅作自己学习用途,一定程度上借鉴了B站UP:Aimls
【Swift编程基础】公司内部培训视频 - 已完结2019年9月份 - ios,Macos,SwiftUI开发前基础知识培训
内容上仅为初步了解,底层还需移步至文档:集合类型 - Swift5.1教程