我试图在运行时找出我的函数是否覆盖了另一个函数.
请考虑以下假设情景.我正在实现一个函数调用freqz,如果安装了信号处理工具箱,它可能存在于MATLAB中.如果确实已经作为工具箱的一部分存在,我想在我自己的内部调用它并返回其结果.如果它不存在,我想我自己的功能做自己的处理.
这是一个伪代码示例
function foo(args)
if overrides_another_function(foo)
func = find_overriden_function(foo);
result = func(args);
else
result = my_own_processing(args);
return result;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,当有人打电话时foo,他们会得到他们期望的版本,如果foo其他地方不可用,则会依赖我自己的实现.MATLAB能够做这样的事吗?
我尝试过的:
exist在内部调用foo返回2(函数存在),因为一旦我们第一次进入函数,就会认为函数被声明.exist从m文件中的函数外部运行是无效的MATLAB语法.只是两个建议,不是真正的答案。
也许可以通过名称(which foo)查找脚本http://www.mathworks.nl/help/matlab/ref/which.html ,但这也可能指向您已经所在的 foo 。
否则,您必须在完整路径中搜索 foo 的出现。