#イテレータ
イテレーションは、値のシーケンスを逐次ステップするプロセスです。 _イテレータ_は、一度に1つの値を提供するエンティティです。SenseTalkでは、リスト、範囲、およびプロパティリストのすべてをイテレータとして使用することができます。さらに、独自のカスタムイテレータオブジェクトを作成することもできます。イテレータが提供する各値をステップしたり、順番に各値を操作する方法はいくつかあります。
Repeat With Eachを使用した反復処理
イテレータが提供する各値を操作し、その値に対して何かアクションを実行する必要がある場合は、repeat with eachループを使用します。例えば、リストから各値を使用するループは次のようになります:
repeat with each color in ["red", "orange", "yellow", "green"]
put "I think " & color & " is a very pretty color."
end repeat
範囲内のすべての値を反復処理するには、リストと同様にrepeat with eachを使用します:
repeat with each letter in "A" to "G"
repeat with each digit in 1 to 3
put letter & digit-- Puts A1, A2, A3, B1, B2, ...
end repeat
end repeat
Each式を使用した反復処理
リストや他のイテレータから各値(または選択された一連の値)を処理し、結果値のリストを生成する必要がある場合、each式は非常に効果的です。each式の結果は常にリストです。Each Expressionsを参照してください。
NextValueを使用した反復処理
nextValue()関数は、イテレータから次の順序的な値を返します。シーケンスが尽き、そのイテレータからこれ以上の値が利用できない場合、特殊な定数値endが返されます。
put 100 to 200 by 50 into range
put range's nextValue -- Puts 100
put range's nextValue -- Puts 150
put range's currentValue --> 150
put range's nextValue -- Puts 200
put range's nextValue -- Puts ⓔ ⓝ ⓓ