Scala «<-» для понимания

Я обнаружил, что в Scala всегда есть «естественное объяснение» чему-либо. Всегда что-то вроде «ох, но это просто функция, вызываемая для того или иного объекта с тем или иным параметром». В некотором смысле нет ничего особенного в компиляторной магии, как мы знаем из других языков.

Мой вопрос касается оператора <- , который используется в следующем коде:

for(i <- 0 to 10) println(i)

В этом примере я вижу, что он переписывается примерно так:

0.to(10).foreach((i:Int)=>println(i))

, но это не объясняет, как i был перенесен в анонимную функцию внутри функции foreach. В том месте, где вы пишете i , это не объект и еще не объявленная переменная. Так что это такое и как оно переносится внутрь foreach?

Думаю, я наконец обнаружил нечто, что на самом деле является магией компилятора.

Спасибо за ваше время.

To поясните, мой вопрос: как оператор <- работает в 1-й строке кода, поскольку i не является объектом, для которого он может быть вызван как функция.

23
задан Felix 20 September 2010 в 18:10
поделиться