使用indices属性可以访问字符串中各个字符的所有索引。 参考Swift文档。
let greeting = "Guten Tag!"
for index in greeting.indices {
print("\(greeting[index]) ", terminator: "")
}
// Prints "G u t e n T a g ! "
但是当我尝试
时for index in greeting {
print("\(index) ", terminator: "")
}
// Prints "G u t e n T a g ! "
那有什么区别?
答案 0 :(得分:0)
在第一个代码块中,fast enumerating
为indices
字符串的greeting
。 Indices
是对升级订阅有效的索引,按升序排列。当您快速枚举indices
时,每个元素都是index
,实际上是String.Index
,您可以使用此String.Index
来访问每个元素(Character
你的字符串变量。
第二个代码块,您快速enumerating
字符串的element
(Character
)本身。看到不同之处非常简单。
按AltOption +左键单击循环中的变量index
以查看魔法。
希望这有帮助!
答案 1 :(得分:0)
在第一种方法中,即
for index in greeting.indices
{
print("\(greeting[index]) ", terminator: "")
}
在indices
上使用 greeting
属性来获取与字符串greeting
对应的所有有效索引。
greeting.indices
对订阅集合有效的索引 升序。
然后对所有返回的有效索引执行fast enumeration
,以使用下标访问问候语的每个元素,即
greeting[index]
在第二种方法中,即
for index in greeting
{
print("\(index) ", terminator: "")
}
在上面的代码中,fast enumeration
在字符串本身上执行,它在greeting
的每个元素上循环。由于元素是直接返回的,因此不需要使用下标。
这是可能的,因为String
也是Collection
,因此支持几乎所有可用于Collection
的API。