【发布时间】:2018-10-30 04:45:41
【问题描述】:
假设我有:
+MyPackage/+MySubPackage2/some_function.m
当它执行时,如何从这个some_function.m 中生成字符串'MyPackage.MySubPackage2.some_function'?
-
mfilename()、dbstack()、what()等都给'some_function' -
meta.package.fromName需要我们所追求的字符串作为其输入 - 解析完整路径 (
mfilename('fullpath')) 或meta.package.getAllPackages()等似乎是唯一的方法...
似乎在package 内的class 中调用mfilename('class') 给出了正确的答案,但对于普通函数没有等价物...
...或者有吗?感觉好像我错过了一些明显的东西......
【问题讨论】:
-
写函数的时候不知道你正在编辑的文件的名字吗? :p
-
@CrisLuengo ...有些时候我确实没有最迷茫的????
-
@jrook 确实。我也可以使用
mfilename('fullpath')获取完整路径,但这不是我想要的 - 我正在寻找您需要在 MATLAB 命令行中键入以调用该函数的确切字符串。 -
有趣的部分是您需要此信息的原因。也许没有这个可以解决根本问题?
-
@Andy 我“需要”如果出于同样的原因您“需要”
mfilename或argv[0]或__name__等:对重命名的弹性。一致的帮助文本生成。可重复使用的代码,在不同的包中无需任何更改即可正常工作。等等。事实上,也许,对于我眼前的问题,我可以消除这种需要,但在这一点上,这只是好奇!为什么到处都有如此丰富的自省,而当包裹被混在一起时却没有……
标签: matlab package octave introspection