2015-06-10 18 views
44

के माध्यम से Iterate मैं स्विफ्ट खेल के मैदानों में कोड का एक बहुत ही सरल टुकड़ा करने की कोशिश कर रहा हूं।स्ट्रिंग स्विफ्ट 2.0

var word = "Zebra" 

for i in word { 
    print(i) 
} 

हालांकि, मैं हमेशा लाइन पर कोई त्रुटि मिलती है 3.

'स्ट्रिंग' एक सदस्य 'जेनरेटर'

कोई भी विचार क्यों यह नहीं है पर नामित नहीं है काम? नोट: मैं स्विफ्ट 2, String के रूप में, Xcode 7 में काम कर रहा हूँ स्विफ्ट 2,0 (Strings and Characters).

उत्तर

77

साथ SequenceType के अनुरूप नहीं है हालांकि, अगर आप String पर characters संपत्ति का उपयोग कर सकते 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 के अनुरूप होने का कारण था और इसलिए पहला विकल्प बेहतर विकल्प जैसा लगता है। यह पता लगाना दिलचस्प है कि क्या संभव है।

+0

कारण है कि स्ट्रिंग SequenceType के अनुरूप नहीं है कि एक ही स्ट्रिंग तत्वों के एक से अधिक अनुक्रम द्वारा दर्शाया जा सकता है। – user3441734

9

StringSequenceType के अनुरूप नहीं है।

var word = "Zebra" 

for i in word.characters { 
    print(i) 
} 

ध्यान दें कि प्रलेखन अभी तक अपडेट नहीं किया गया: हालांकि आप इस तरह से इसके बारे में characters संपत्ति पहुँच सकते हैं। characters संपत्ति के indices संपत्ति एक स्ट्रिंग में अलग-अलग पात्रों के indices के सभी का उपयोग करने की

+0

धन्यवाद इससे मुझे मदद मिली जब मैं समझ नहीं पाया कि स्ट्रिंग पर 'रिवर्स' का उपयोग कैसे किया जाए। यह string.characters.reverse() {...} 'में char के लिए होना चाहिए – pbush25

2

स्विफ्ट 4

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) }) 
संबंधित मुद्दे