如何获取当前正在执行的函数的标准名称?

时间:2018-10-30 04:45:42

标签: matlab package octave introspection

假设我有

+MyPackage/+MySubPackage2/some_function.m

在执行过程中,如何从此'MyPackage.MySubPackage2.some_function'中生成字符串some_function.m

  • mfilename()dbstack()what()等都只给出'some_function'
  • meta.package.fromName要求输入字符串作为后缀
  • 解析完整路径(mfilename('fullpath')meta.package.getAllPackages()等似乎是唯一的方法...

似乎在mfilename('class')内的class中调用package给出了正确的答案,但是普通函数没有等效功能……

...还是在那里?感觉好像我缺少明显的东西...

1 个答案:

答案 0 :(得分:3)

如果可以导入包含的包(例如p1 / p2),则:

function outputArg1 = some_function()
import p1.p2.*
t = @some_function;
func2str(t)
%ans  = 'p1.p2.some_function'
outputArg1 = ...;
end

也可以使用this answer中的方法(可能会进行一些更改)来自动执行导入过程。