Swift表示有效索引范围的indices属性
Swift表示有效索引范围的indices属性

Swift表示有效索引范围的indices属性

在 Swift 中,indices 是 Collection(如数组、字符串等)类型的一个属性,用来表示集合中所有有效索引的范围。

indices 的定义和作用

对于一个数组 piggyBank,piggyBank.indices 是一个 Range 或 ClosedRange,它表示数组中所有有效索引的范围。例如:

let piggyBank = ["A", "B", "C"]

// piggyBank.indices 是 0..<3
for index in piggyBank.indices {
    print(index)
}

输出

0
1
2

在这个例子中:

piggyBank.indices 等价于 0..<piggyBank.count,表示数组的所有有效索引范围。

遍历 piggyBank.indices 会遍历数组的所有有效索引。

为什么使用 indices 而不是手写索引?

1、安全性

indices 保证只返回有效的索引,避免手动写索引范围(如 0..<array.count)时可能出现的错误。

2、可读性

使用 indices 更直观地表达「遍历集合的所有索引」。

3、泛用性

indices 适用于所有 Collection 类型,包括数组、字典、集合等,而不仅仅是数组。

在 ForEach 中的使用

ForEach 是 SwiftUI 中用于动态创建视图的结构。piggyBank.indices 在这里的作用是提供数组的所有有效索引,以便在闭包中通过索引访问数组的元素。

例如

struct ContentView: View {
    let piggyBank = ["Savings", "Vacation", "Emergency"]
    
    var body: some View {
        ForEach(piggyBank.indices, id: \.self) { index in
            Text("\(index): \(piggyBank[index])")
        }
    }
}

输出

0: Savings
1: Vacation
2: Emergency

分析

piggyBank.indices 返回 0..<3,对应数组的所有有效索引。

id: \.self 告诉 ForEach,每个索引值本身是唯一的标识符。

闭包 index in 中可以通过索引 index 访问 piggyBank 的元素。

总结

indices 是 Collection 的一个属性,表示集合的所有有效索引范围。在 ForEach 中使用 piggyBank.indices 是一种安全且简洁的方式来遍历数组的索引,以便通过索引访问数组的元素。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注