Swift playgrounds。)で非常に単純なコードを実行しようとしています。
var Word = "Zebra"
for i in Word {
print(i)
}
ただし、3行目に常にエラーが表示されます。
「String」には「Generator」という名前のメンバーがありません
これが機能しない理由についてのアイデアはありますか?注:私はXcode 7で、Swift 2.0( Strings and Characters)。
Swift 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)
}
ただし、AppleにはString
のSequenceType
への適合性を削除する理由があったので、最初のオプションがより良い選択のように思われます。しかし何が可能です。
String
はSequenceType
に準拠しなくなりました。ただし、次の方法でcharacters
プロパティにアクセスできます。
var Word = "Zebra"
for i in Word.characters {
print(i)
}
ドキュメントはまだ更新されていないことに注意してください。
Forinループ:
let Word = "Swift 4"
for i in Word {
print(i)
}
map例:
let Word = "Swift 4"
_ = Word.map({ print($0) })
forEach例:
let Word = "Swift 4"
Word.forEach({ print($0) })
Swift 3.0.1
indices
プロパティのcharacters
プロパティを使用して、文字列内の個々の文字のすべてのindices
にアクセスします。
let greeting = "Guten Tag!"
for index in greeting.characters.indices {
print("\(greeting[index]) ", terminator: "")
}
// Prints "G u t e n T a g ! "