我想在Swift游乐场做一个非常简单的代码片段。迭代通过字符串斯威夫特2.0
var word = "Zebra"
for i in word {
print(i)
}
但是,我总是在线的错误3.
“串”没有一个名为为什么这不“发电机”
任何想法成员工作?注:我在Xcode 7个,与雨燕2.0(Strings and Characters).
我想在Swift游乐场做一个非常简单的代码片段。迭代通过字符串斯威夫特2.0
var word = "Zebra"
for i in word {
print(i)
}
但是,我总是在线的错误3.
“串”没有一个名为为什么这不“发电机”
任何想法成员工作?注:我在Xcode 7个,与雨燕2.0(Strings and Characters).
随着斯威夫特2,String
的不符合SequenceType
但是,您可以使用characters
财产上String
characters
返回String.CharacterView
这符合SequenceType
。所以可以通过与for
循环迭代:
let word = "Zebra"
for i in word.characters {
print(i)
}
或者,你可以扩展添加到String
,以使其符合SequenceType
:
extension String: SequenceType {}
// Now you can use String in for loop again.
for i in "Zebra" {
print(i)
}
虽然,我相信苹果有一个理由去除String
的符合SequenceType
,所以第一个选项似乎是更好的选择。探索什么是可能的,但很有趣。
String
不再符合SequenceType
了。然而,你可以访问它的属性characters
这样:
var word = "Zebra"
for i in word.characters {
print(i)
}
注意,文件尚未更新。
感谢这帮助我,当我无法弄清楚如何使用字符串上的'reverse'。对于string.characters.reverse(){...}'中的char必须是' – pbush25
斯威夫特3.0.1
使用characters
属性的indices
属性来访问所有单个字符的indices
的字符串。
let greeting = "Guten Tag!"
for index in greeting.characters.indices {
print("\(greeting[index]) ", terminator: "")
}
// Prints "G u t e n T a g ! "
Forin循环:
let word = "Swift 4"
for i in word {
print(i)
}
地图例如:
let word = "Swift 4"
_ = word.map({ print($0) })
的forEach例如:
let word = "Swift 4"
word.forEach({ print($0) })
为什么字符串不符合序列类型的原因是,相同的字符串可以通过元件的多于一个的序列来表示。 – user3441734