Я ничего не знаю о Scala, но не понимаю, почему это не должно быть реализовано так же, как замыкания в C #, то есть следующий код:
new List<int>{1,2,3}.Where(i => i >= 2)
Этот код реализован путем создания новой функции в текущем классе. Если вы действительно создали замыкание:
int max = 2;
var result = new List<int> { 1, 2, 3 }.Where(i => i >= max);
Это было бы реализовано путем создания нового класса, который содержит переменную max
вместе с анонимной функцией.
EDIT:
Я только что попытался скомпилировать ваш код с использованием Scala.Net, и просмотр скомпилированного кода в Reflector дает следующее:
int[] numArray1 = new int[] { 1, 2, 3 };
List$.MODULE$.apply(new BoxedIntArray(numArray1)).filter(new $anonfun$1());
Где $anonfun$1
- это класс, который реализует интерфейс Function1
, а его функция apply()
выглядит следующим образом:
public sealed override bool apply(int x$1)
{
return (x$1 >= 2);
}