2015-09-15 4 views
2

Можно использовать функцию inputname для извлечения имени переменной рабочей области, переданного в вызове текущей исполняемой функции. Однако существует ли какая-либо эквивалентная функция для получения имени выходных аргументов, указанных в вызове текущей исполняемой функции?Получить имя выходных аргументов внутри функции

Представьте У меня есть следующие функции:

function [a,b,c] = test(x) 
disp([ouputname(1),ouputname(2),ouputname(3)]) 
end 

При выполнении этой функции:

[my,name,is] = test(x) 

Ожидаемый результат должен быть:

mynameis 

ответ

1

Просто: нет нет.

Сложное: Matlab код «составлен» по времени выполнения, и нет никакого способа, что он знает [my,name,is], прежде чем он возвращает результат test(x).


Обход: если вы хотите, чтобы гарантировать, что строки, используемые в функции равны переменным возвращается в рабочее пространство, вы можете сделать следующее с помощью assignin:

function test(x, varnames) 

a = 1; 
outputname{1} = varnames{1}; 
assigin('base', outputname{1}, a) 

... 

c = 3; 
outputname{3} = varnames{3}; 
assigin('base', outputname{3}, c) 

disp([outputname{:}]) 

end 

и позвоните по следующей схеме:

text(x,{'my','name','is'}) 

и вы будете иметь именно эти переменные в своем рабочем пространстве после этого, и ваши функциональный выход:

"mynameis"

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