2016-05-02 5 views
2

Например, taken from Matlab:Извлечение сохраненных значений переменных из анонимной функции

a = 1.3; 
b = .2; 
c = 30; 
parabola = @(x) a*x.^2 + b*x + c; 

parabola можно назвать даже если a, b, c удаляются из рабочей области. Объяснение:

Поскольку a, b и c доступны в момент создания параболы, дескриптор функции включает эти значения. Значения сохраняются в описатель функции, даже если очистить переменные:

После анонимной функции как parabola создается, как я позже получить или увидеть переменные, хранящиеся в нем?

ответ

2

Вы можете использовать функцию functions для получения информации об анонимной функции, включая внутреннее рабочее пространство, в котором эти переменные определены.

a = 1.3; 
b = .2; 
c = 30; 
parabola = @(x) a*x.^2 + b*x + c; 

clear a b c 

F = functions(parabola); 
variables = F.workspace{1}; 

%// variables = 
%// 
%//  a: 1.3 
%//  b: 0.2 
%//  c: 30 

Рабочая область содержит struct с полем для каждой переменной, которая содержится в пределах рабочей функции дескриптора.

Смежные вопросы