Това е отличен въпрос и прилича малко на това как Lambda функциите в C++ прихващат (capture) контекст - по стойност или по псевдоним.
Що се отнася до изискванията сте свободни да го направите по един от двата начина, като съм сигурен, че това ще е основна тема за дискусия по време на защитата.
Настройчиво ви препоръчвам да прочетете по темата за Closures и да разберете идеята.
Поздрави