У меня есть функция очистки, которая использует пару аргументов, которые изменяют поведение процедуры очистки:
function MainFunction()
x=1;
y=1;
cleanupObj = onCleanup(@()cleanupFun(x,y));
end
function cleanupFun(x,y)
if(x)
%do something
end
if(y)
%do another thing
end
end
Теперь, в моем более широком случае использования, x и y будут меняться много раз в течение жизни MainFunction. Должен ли я переопределять свой cleanupObj каждый раз при изменении x или y? Для моего случая это было бы довольно некрасиво. Другая идея, о которой я подумал, заключается в использовании того факта, что x и y изменяются подфункциями. Можно ли передать дескриптор объекта очистки этим подфункциям, чтобы я мог переопределить дескриптор объекта очистки внутри подфункции, а не переопределять его после каждого вызова подфункции?