假设我有
+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
给出了正确的答案,但是普通函数没有等效功能……
...还是在那里?感觉好像我缺少明显的东西...
答案 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中的方法(可能会进行一些更改)来自动执行导入过程。