LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

В JS «замыкаются» не конкретные значения переменных, а весь scope вместе со всеми переменными,…

что вы лоб, что по лбу. видимый внешний скоп в данном случае будет просто адресом фрейма на стеке локальных переменных внешней функции, который передадут этой лямбде скрытым параметром. так в modula-2 сделано еще в начале 80х.

а компилятор сгенерит код доступа к переменным из внешнего скопа с смещением относительно этого адреса.

в данном случае - это общий захват, но в плюсах делается не так. там то, что надо захватить обьявляется явно.

оба способа хороши по своему. общий захват - проще, частный - более защищенный явной декларацией.

Исправление alysnix, :

В JS «замыкаются» не конкретные значения переменных, а весь scope вместе со всеми переменными,…

что вы лоб, что по лбу. видимый внешний скоп в данном случае будет просто адресом фрейма на стеке локальных переменных внешней функции, который передадут этой лямбде скрытым параметром. так в modula-2 сделано еще в начале 80х.

а компилятор сгенерит код доступа к этим переменным с смещением относительно этого адреса.

в данном случае - это общий захват, но в плюсах делается не так. там то, что надо захватить обьявляется явно.

оба способа хороши по своему. общий захват - проще, частный - более защищенный явной декларацией.

Исходная версия alysnix, :

В JS «замыкаются» не конкретные значения переменных, а весь scope вместе со всеми переменными,…

что вы лоб, что по лбу. видимый внешний скоп в данном случае будет просто адресом фрейма на стеке локальных переменных внешней функции, который передадут этой лямбде скрытым параметром. так в modula-2 сделано еще в начале 80х.

а компилятор сгенерит код доступа к этим переменным с смещением относительно этого адреса.

в данном случае - это общий захват, но в плюсах делается не так. там то, что надо захватить обьявляется явно.