Я очень новичок в функциональных концепциях программирования и смотрел презентацию Нила Форда в youtube. Там он говорит о прилавке, чтобы продемонстрировать фрагмент кода без использования глобального состояния (в 20:04). Исходя из Java-мира, мне сложно понять концепцию здесь и как счетчик увеличивается. Ниже приведен соответствующий кодСчетчик функционального стиля в Groovy
def makeCounter() {
def very_local_variable = 0;
return {very_local_variable += 1}
}
c1 = makeCounter()
c1()
c1()
c1()
c2 = makeCounter()
println "C1 = ${c1()}, C2 = ${c2()}"
Далее он скажет, что C1 = 4 и C2 = 1 будут напечатаны. Как это произошло? Я уверен, что мое отсутствие понимания здесь проистекает из, вероятно, концептуального отказа в том, как работает Groovy или, возможно, есть что-то общее в функциональных языках, таких как Groovy, Scala и т. Д. Локальная переменная внутри метода поддерживает свое состояние до тех пор, пока функция не будет вызвана снова и присваивается другой переменной? (Поиск в google с «функциональным счетчиком groovy | scala» ничего не приносит)
Читайте это: http://groovy.codehaus.org/Closures. –
Особенно «свободные переменные» _ раздел –
merci. Я сейчас просвещен! – zencv