通过String Swift 2.0迭代
我想在Swift游乐场里做一个非常简单的代码。
var word = "Zebra" for i in word { print(i) }
但是,我总是在第3行发生错误。
'String'没有名为'Generator'的成员
任何想法,为什么这是行不通的? 注意:我在Xcode 7中使用Swift 2.0( string和字符)。
从Swift 2开始, String
不符合SequenceType
。 但是,您可以使用String
上的characters
属性。 characters
返回一个符合SequenceType
的String.CharacterView
,所以可以用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
,所以第一个选项似乎是更好的select。 探索什么是可能的,但是很有趣。
String
不再符合SequenceType
。 但是你可以这样访问它的characters
属性:
var word = "Zebra" for i in word.characters { print(i) }
请注意,文档尚未更新。
Swift 3.0.1
使用characters
属性的indices
属性可以访问string中所有单个字符的indices
。
let greeting = "Guten Tag!" for index in greeting.characters.indices { print("\(greeting[index]) ", terminator: "") } // Prints "G uten T ag ! "
斯威夫特4
Forin循环:
let word = "Swift 4" for i in word { print(i) }
地图示例:
let word = "Swift 4" _ = word.map({ print($0) })
例如:
let word = "Swift 4" word.forEach({ print($0) })