Привязка переменных Scala при использовании с Actors

Я довольно новичок в Scala. Я пытаюсь понять, как/если Scala делает динамическое связывание, когда закрытие передается как часть сообщения Актору.

Я использую Akka 1.2 со Scala 2.9.

У меня есть следующий участок кода (модифицированный из http://gleichmann.wordpress.com/2010/11/15/functional-scala-closures/)

var minAge = 18
val isAdult = (age: Int) => age >= minAge

actor ! answer(19, isAdult) 
minAge = 20
actor ! answer(19, isAdult)

На стороне актора он просто применяет isAdult к первому параметру и выводит результат. Поскольку Scala использует динамическое связывание (так мне сказали), я бы ожидал

true
false

но почему-то получается

false
false

Так действительно ли Scala связывает переменную статически и принимает 18 в качестве значения minAge для обоих сообщений ответа? Есть ли способ сохранить динамическое поведение привязки при использовании закрытий в сообщениях?

Спасибо!

5
задан royalflush 9 December 2011 в 04:33
поделиться