Aqui está um exemplo mínimo do meu problema:
innerFunc([2, 4, 5]) % works fine
outerFunc(innerFunc, [2, 4, 5]) % doesn't work
function out = innerFunc(my_vec)
my_vec % not recogniced when called from outerFunc
out = -1;
end
function out = outerFunc(func, my_vec)
out = func(my_vec);
end
Esta é a saída do código:
my_vec =
2 4 5
ans =
-1
Not enough input arguments.
Error in nested_funcs_bug>innerFunc (line 5)
my_vec % not recogniced when called from outerFunc
Error in nested_funcs_bug (line 2)
outerFunc(innerFunc, [2, 4, 5]) % doesn't work
>>
Não sei por que o erro na linha 2?
Principalmente porque "innerFunc" geralmente funciona e eu passo uma entrada para ele na função outerFunc.
Parece que em
você pretende passar
innerFunc
como uma entrada paraouterFunc
. No entanto, o que essa linha faz é chamarinnerFunc
(o que dá um erro porque a entrada para essa função está faltando); e a saída dessa chamada de função seria então usada como entrada paraouterFunc
.Para passar (um identificador de)
innerFunc
como entrada,outerFunc
você precisa prefixar@
(mais informações aqui ):