2017-09-16 19 views
1

文字列処理用のイテレータを作成して、次の文字列が返されるたびに返します。しかし、運がない。 (最終的な目標は、カスタムスクリプト言語用のパーサーを書くことです)switerの文字列反復子

ネット上で見つかったすべてのメソッドは、文字列の文字に一度に1つずつアクセスする範囲のforループを含みます。 しかし、私はhasNext()やgetNextChar()などのメソッドが必要です。他の関数が呼び出すメソッドが必要です。

swiftのようなイテレータクラスを作成する最も効果的な方法は何ですか?すでにその機能を実装しているクラスがあるかもしれません。そのため、まずイテレータを作成する必要はありませんか?

+0

'myString.characters {//もの}'にcharの。 – rmaddy

+0

@rmaddy、答えをありがとう!しかし、私が言及したように、私はhasNext()やgetNextChar()のようなメソッドを実装する必要があり、すべての仕事をするforループではありません... –

答えて

1

StringcharactersmakeIterator()を呼び出し、IndexingIterator<String>を返します。次の文字を取得するには、next()に電話することができます。これ以上文字がない場合はnilを返します。

let myString = "abcde" 

var iter = myString.characters.makeIterator() // Swift 3 
// var iter = myString.makeIterator()   // Swift 4 

while let c = iter.next() { 
    print(c) 
} 

出力:

a 
b 
c 
d 
e 
+0

ありがとうたくさんのvacawama!出来た! (スイフト3) –

関連する問題