假设我有func1,func2而且func3.有没有办法用已知的参数来定义他们的名字来调用它们?(或者他们的指针?处理程序?)
就像是:
toBeRunned = [ 'func1'; 'func2'; 'func3' ];
// .. foreach entry of toBeRunned call the function with VAR params ..
Run Code Online (Sandbox Code Playgroud)
这就是函数句柄的意思.
toBeRun = {@func1, @func2, @func3};
for ix = 1:length(toBeRun)
fnArguments = {1, 2, 3, 'four'};
fnTmp = toBeRun{ix};
fnTmp(fnArguments{:});
end
Run Code Online (Sandbox Code Playgroud)
关于我们在这里做什么的更多解释:
toBeRun是一个函数句柄的单元格数组,只是一个任意列表.对于写为M文件的函数,添加了@创建函数句柄所需的全部内容.
为了评估函数,需要将其从单元格数组中删除(fnTmp在本例中为.)这是Matlab的语法限制.你也可以使用fneval,但我通常这样做.
可以按照通常的方式(例如fnTmp(1,2,3,'four'))根据需要添加任何参数.但是如果你需要这么多的抽象,你可能还需要使用任意数量的输入参数.该fnArguments电池是完成这一个非常灵活的方式.
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |