Swift 数组、字典和集合
创始人
2025-07-11 03:01:41
0

本文我们将介绍 Swift 中的变量、常量和数据类型。如果你尚未安装 Xcode 和配置 Swift 开发环境,请您先阅读这篇文章。

接下来,我们启动 Xcode,然后选择 "File" > "New" > "Playground"。创建一个新的 Playground 并命名为 "Collections"。

Arrays

数组是一种用于存储相同类型元素的有序集合,是 Swift 中常用的数据结构之一。让我们通过比较 Swift 和 TypeScript 中的示例,了解如何使用数组以及它们的基本操作。

创建一个数组

Swift Code

var numbers = [1, 2, 3, 4, 5]
// 或者 var numbers: [Int] = [1, 2, 3, 4, 5]

var fruits = ["Apple", "Banana", "Orange"]
// 或者 var fruits: [String] = ["Apple", "Banana", "Orange"]

TypeScript Code

let numbers = [1, 2, 3, 4, 5];
// 或者 let numbers: number[] = [1, 2, 3, 4, 5];

let fruits = ["Apple", "Banana", "Orange"];
// 或者 let fruits: string[] = ["Apple", "Banana", "Orange"];

访问和修改数组元素

在 Swift 和 TypeScript 中,您可以通过下标访问和修改数组元素。

Swift Code

let firstNumber = numbers[0]
// firstNumber: 1

numbers[1] = 10

TypeScript Code

const firstNumber = numbers[0];
// firstNumber: 1

numbers[1] = 10;

添加元素

在 Swift 中,使用 append 方法添加元素。而在 TypeScript 中,是使用 push 方法。

Swift Code

fruits.append("Grapes")
// fruits: ["Apple", "Banana", "Orange", "Grapes"]

TypeScript Code

fruits.push("Grapes");
// fruits: ["Apple", "Banana", "Orange", "Grapes"]

删除元素

在 Swift 中,使用 remove(at:) 方法删除指定位置的元素。而在 TypeScript 中,是使用 splice 方法。

Swift Code

fruits.remove(at: 1)
// fruits: ["Apple", "Orange", "Grapes"]

TypeScript Code

fruits.splice(1, 1);
// fruits: ["Apple", "Orange", "Grapes"]

获取数组长度

在 Swift 中,使用 count 属性获取数组长度。而在 TypeScript 中,是使用 length 属性。

Swift Code

let count = fruits.count

TypeScript Code

const count = fruits.length;

遍历数组元素

在 Swift 中,可以使用 for-in 遍历数组。而在 TypeScript 中,可以使用 for-of 循环。

Swift Code

for fruit in fruits {
    print("I like \(fruit)s")
}

/**
Output:
I like Apples
I like Oranges
I like Grapess
*/

TypeScript Code

for (const fruit of fruits) {
    console.log(`I like ${fruit}s`);
}

/**
Output:
"I like Apples" 
"I like Oranges" 
"I like Grapess" 
*/

字典

字典是一种用于存储键值对的集合,它允许你通过键来快速检索值。

创建一个字典

在 Swift 中,字典使用 [Key: Value] 的语法来声明,其中 Key 是键的数据类型,Value 是值的数据类型。

Swift Code

var studentScores = ["Alice": 95, "Bob": 87, "Charlie": 90]

TypeScript Code

let studentScores: { [key: string]: number } = { "Alice": 95, "Bob": 87, "Charlie": 90 };

访问和修改字典元素

在 Swift 和 TypeScript 中,你可以通过键访问和修改字典元素。

Swift Code

let aliceScore = studentScores["Alice"]

studentScores["Bob"] = 92
// studentScores: ["Alice": 95, "Bob": 92, "Charlie": 90]

TypeScript Code

const aliceScore = studentScores["Alice"];

studentScores["Bob"] = 92;
// studentScores: {"Alice": 95, "Bob": 92, "Charlie": 90}

添加键值对

在 Swift 和 TypeScript 中,使用下标赋值的方式添加键值对。

Swift Code

studentScores["David"] = 88
// studentScores: ["Charlie": 90, "Alice": 95, "Bob": 92, "David": 88]

TypeScript Code

studentScores["David"] = 88;
// studentScores: {"Charlie": 90, "Alice": 95, "Bob": 92, "David": 88}

删除键值对

在 Swift 中,使用 removeValue(forKey:) 方法删除指定键的键值对。而在 TypeScript 中,是使用 delete 操作符删除键值对。

Swift Code

studentScores.removeValue(forKey: "Charlie")
// studentScores: ["David": 88, "Bob": 92, "Alice": 95]

TypeScript Code

delete studentScores["Charlie"];
// studentScores: {"David": 88, "Bob": 92, "Alice": 95}

获取键和值的集合

在 Swift 中,通过 keys 和 values 属性获取字典的键和值的集合。而在 TypeScript 中,是使用 Object.keys 和 Object.values 方法。

Swift Code

let allKeys = Array(studentScores.keys)
let allValues = Array(studentScores.values)
// allKeys: ["David", "Bob", "Alice"]
// allValues: [88, 92, 95]

TypeScript Code

const allKeys: string[] = Object.keys(studentScores);
const allValues: number[] = Object.values(studentScores);
// allKeys: ["Alice", "Bob", "David"] 
// allValues: [95, 92, 88]

遍历字典

在 Swift 和 TypeScript 中,都可以通过 for-in 循环遍历字典。

Swift Code

for (name, score) in studentScores {
    print("\(name) scored \(score)")
}

/**
Output:
Alice scored 95
Bob scored 92
David scored 88
*/

TypeScript Code

for (const name in studentScores) {
    const score: number = studentScores[name];
    console.log(`${name} scored ${score}`);
}

/**
Output:
"Alice scored 95" 
"Bob scored 92"
"David scored 88" 
*/

集合

集合是一种无序、无重复元素的集合类型。在 Swift 中,集合通过 Set 类型表示。

创建一个集合

Swift Code

var numberSet: Set = [1, 2, 3, 4, 5]

TypeScript Code

let numberSet: Set = new Set([1, 2, 3, 4, 5]);

添加元素

在 Swift 中,使用 insert 方法向集合中添加元素。而在 TypeScript 中,使用 add 方法。

Swift Code

numberSet.insert(6)
// numberSet: [3, 4, 5, 1, 2, 6]

TypeScript Code

numberSet.add(6);
// numberSet: {1, 2, 3, 4, 5, 6}

移除元素

在 Swift 中,使用 remove 方法移除集合中的元素。而在 TypeScript 中,使用 delete 方法。

Swift Code

numberSet.remove(3)
// numberSet: [5, 2, 1, 4, 6]

TypeScript Code

numberSet.delete(3);
// numberSet: {1, 2, 4, 5, 6}

遍历集合

在 Swift 中,可以使用 for-in 循环遍历集合。而在 TypeScript 中,可以通过 forEach 方法遍历集合。

Swift Code

for number in numberSet {
    print("Number is \(number)")
}

/**
Output:
Number is 2
Number is 1
Number is 5
Number is 6
Number is 4
*/

TypeScript Code

numberSet.forEach((number) => {
    console.log(`Number is ${number}`);
});

/**
Output:
"Number is 1"
"Number is 2"
"Number is 4"
"Number is 5"
"Number is 6"
*/

集合交集

在 Swift 中,使用 intersection 方法获取两个集合的交集。而在 TypeScript 中,可以使用 Set 构造函数和 filter 方法。

Swift Code

let anotherSet: Set = [4, 5, 6]
let intersection = numberSet.intersection(anotherSet)

// numberSet: [1, 5, 4, 2, 6]
// anotherSet: [5, 4, 6]
// intersection: [5, 4, 6]

TypeScript Code

const anotherSet: Set = new Set([4, 5, 6]);
const intersection: Set = new Set([...numberSet].filter(x => anotherSet.has(x)));

// numberSet: {1, 2, 4, 5, 6} 
// anotherSet: {4, 5, 6}
// intersection: {4, 5, 6}

集合并集

在 Swift 中,使用 union 方法获取两个集合的并集。

Swift Code

let union = numberSet.union(anotherSet)

// numberSet: [5, 1, 4, 2, 6]
// anotherSet: [4, 5, 6]
// union: [5, 1, 4, 2, 6]

TypeScript Code

const union: Set = new Set([...numberSet, ...anotherSet]);

// numberSet: {1, 2, 4, 5, 6} 
// anotherSet: {4, 5, 6}
// union: {1, 2, 4, 5, 6}

集合差集

在 Swift 中,使用 subtracting 方法获取两个集合的差集。而在 TypeScript 中,可以使用 Set 构造函数和 filter 方法。

Swift Code

let difference = numberSet.subtracting(anotherSet)

// numberSet: [6, 2, 4, 1, 5]
// anotherSet: [5, 6, 4]
// difference: [1, 2]

TypeScript Code

const difference: Set = new Set([...numberSet].filter(x => !anotherSet.has(x)));

// numberSet: {1, 2, 4, 5, 6} 
// anotherSet: {4, 5, 6}
// difference: {1, 2}

本文我们介绍 Arrays, Dictionaries 和 Sets 三种集合类型等相关的知识。通过与 TypeScript 语法的对比,希望能帮助您更好地理解 Swift 的相关特性。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...