2016-07-18 13 views
0

私はswift 3で以下の拡張子を使用していますが、まだエラーが発生するため、間違っていることがわかります。拡張のポイントは0から文字列を返します構文string[0...2]を使用して文字列の範囲を取得するにはこれは私がスウィフト3、...が発生し、閉じた範囲演算子でenter image description here拡張機能はどのように迅速に動作しますか?

extension String { 

subscript (i: Int) -> Character { 
    return self[self.characters.index(self.startIndex, offsetBy: i)] 
} 

subscript (i: Int) -> String { 
    return String(self[i] as Character) 
} 

subscript (r: Range<Int>) -> String { 
    let start = characters.index(startIndex, offsetBy: r.lowerBound) 
    let end = characters.index(start, offsetBy: r.upperBound - r.lowerBound) 
    return self[(start ..< end)] 
    } 
} 
+0

http://stackoverflow.com/a/38215613/2303865 –

答えて

4

を取得していますエラーですIntsについてはCountableClosedRangeである。したがって、subscriptのオーバーロードをもう1つ定義する必要があります。

subscript (r: CountableClosedRange<Int>) -> String { 
     let start = characters.index(startIndex, offsetBy: r.lowerBound) 
     let end = characters.index(start, offsetBy: r.upperBound - r.lowerBound) 
     return self[(start ... end)] 
    } 
+0

それは私の仕事です! – slboat

関連する問題