Подумайте просто, если я разработчик языка, следующие утверждения:
for ( a; b; c ) d
и
for ( a; { b }; { c }) { d }
Должен быть строго эквивалентен
Очевидно, что некоторые переменные, определенные в a
, могут использоваться в b
, c
, d
, поэтому только a
является особенным.
КСТАТИ
Я думаю, что утверждение в Скала прекраснее. В Scala for
это просто синтаксический suger:
for (i <- v) s <==> v.foreach(i => s)
Где
i => s
- это синтаксис ламбы, например:
[](auto i){ s }
в C ++ 11
Это универсальная истина, переменная v
любого типа, которая определяет функцию foreach
, может использоваться в операторе for
.