Foreach文
式を評価し、その結果は静的配列、動的配列、連想配列、構造体、クラスでなければいけない。式部分が配列である場合は、変数は複数宣言することができる。
foreach (変数 ; 式) { 文 }
#do:は列挙プロトコルに属しており、#do:を実装しCollectionあるいはIterableを継承したオブジェクトは、#select:, #collect:, #detect:, #inject:into:といったその他の列挙プロトコルが同時に使えるようになる。
戻り値を返さない。(Smalltalkの制約上、正確にはselfを返す)
#do:の引数としてValueAdapter (#value:を送ることができるオブジェクト) を指定する。(ブロックはValueAdapterの一種)
引数として指定したValueAdapterが0回以上の反復に対応している。
(1 to: 100) do: [ :each | 文 ].
例えば一定回数反復したい場合も#do:を使い、上記のようになる。
Smalltalkは後発の無名関数を備えたオブジェクト指向言語に広く影響を与えており、Ruby、ECMAScript、Java、C#も同様のライブラリを備えつつある。