2016-12-19 238 views
4

序列類型爲SWIFT 2.2我用這個Generator.Element在斯威夫特3

extension SequenceType where Generator.Element == Character { 

} 

,但是當我想轉換成斯威夫特3我必須使用的 Sequence代替SequenceType

extension Sequence where Generator.Element == Character { 

} 

yeilds

使用未聲明的類型「發電機」的

那麼,如何才能解決這個問題呢?

+0

見例如https://github.com/apple/swift-evolution/blob/master/proposals/0006-apply-api-guidelines-to-the-standard-library.md:*「發電機」的概念被重新命名爲「迭代器「跨越所有API。」* –

+0

@MartinR,謝謝。由於沒有提供任何建議,我感到困惑。 – Vyacheslav

+0

您是否嘗試過在Xcode中編輯 - >轉換 - >到當前Swift語法?它應該自動修復。 –

回答

10

Swift 3語言概率的概述可在 https://swift.org/blog/swift-3-0-released/找到。

這種特殊的變化 是SE-0006 Apply API Guidelines to the Standard Library部分:

「發電機」的概念被重新命名爲「迭代」在所有的API。

所以您的擴展必須定義爲

extension Sequence where Iterator.Element == Character { 

} 
+0

對於Swift 3.1,你可以這樣做:'擴展數組元素==字符' – thedp

+0

@thedp:感謝您的反饋。請注意,OP要求擴展到'Sequence',而不是'Array'。 (一個數組是一個序列,但不是其他方式。) –

+0

我明白,我可能是錯的,但是OP實際上試圖做的是擴展字符串的字符。這與Swift 3.1有關。沒有? – thedp