別の、よりクロスダイアレクトなバリアントは、間隔もコレクションであることを覚えておくことです (これもより機能的だと思います)。
| sequence |
sequence = #('I' 'invented' 'the' 'term' 'Object' 'Oriented' 'Programming' 'and' 'this' 'is' 'not' 'it').
(1 to: sequence size by: 2) collect: [:n | sequence at: n]
戻ります:
#('I' 'the' 'Object' 'Programming' 'this' 'not')
しかし、簡単に元に戻すことができます
#('invented' 'term' 'Oriented' 'and' 'is' 'it')
1
先頭を a に交換するだけ2
です。いいのは、好きなようにスライスできることです。方言にpairsCollect:がある場合、隣接するアイテムにのみ使用できます。後ろから 2 つ前の単語から 3 つおきの単語を逆順に取得することはできません。
(sequence size - 1 to: 1 by: -3) collect: [:n | sequence at: n]
"returns"
#('not' 'and' 'Object' 'invented')
シーケンスをスライス イテレータとして使用するcollect:
方が、はるかに便利で一般的なパターンであることがわかりました。