【发布时间】:2016-10-04 15:42:15
【问题描述】:
var str = "Hello"
print(str.characters) // CharacterView(_core: Swift._StringCore(_baseAddress: Optional(0x000000011c9a68a0), _countAndFlags: 5, _owner: nil))
print(str.characters.index(of: "o")!) // Index(_base: Swift.String.UnicodeScalarView.Index(_position: 4), _countUTF16: 1)
print(Array(str.characters)) // ["H", "e", "l", "l", "o"]
print(str.characters.map{String($0)}) //["H", "e", "l", "l", "o"]
for character in str.characters{
print(character)
}
// H
// e
// l
// l
// o
我阅读了this 的问题。我从 Swift 参考资料中查看了String,发现:var characters: String.CharacterView。
但我想知道 str.characters 究竟返回了什么?我怎么能如此轻松地枚举它,或者转换它到一个数组或 map 它然后打印它本身,甚至当它被索引到它时打印如此乱码
我很确定我不明白是因为不了解characterView。我希望是否有人可以在这个问题中对它的作用和含义给出一个外行的概述。
【问题讨论】:
-
您不仅应该查看
CharacterView文档,还应该查看它所遵循的协议的文档,这些就是您要查找的内容。例如,您可以枚举CharacterView,因为它符合Sequence协议。 -
@Fantattitude 刚刚重读一遍,还是迷路了