在不使用 eval/feval 的情况下动态寻址 MATLAB 模块
Dynamically addressing MATLAB modules without using eval/feval
考虑具有此文件结构的代码库:
myScript.m (Script)
+modA/
fn.m (Function)
+modB/
fn.m (Function)
myScript.m
必须使用字符串 str_moduleName
.
的结果选择在运行时调用 modA.fn
或 modB.fn
中的哪一个
有没有办法避免调用 feval([str_moduleName,'.fn'])
?
我没试过这个,但我想你可以构建一个带有函数句柄的结构:
S.modA = @modA.fn
S.modB = @modB.fn
然后您可以使用 str_moduleName
的值调用该函数,如下所示:
S.(str_moduleName)()
考虑具有此文件结构的代码库:
myScript.m (Script)
+modA/
fn.m (Function)
+modB/
fn.m (Function)
myScript.m
必须使用字符串 str_moduleName
.
modA.fn
或 modB.fn
中的哪一个
有没有办法避免调用 feval([str_moduleName,'.fn'])
?
我没试过这个,但我想你可以构建一个带有函数句柄的结构:
S.modA = @modA.fn
S.modB = @modB.fn
然后您可以使用 str_moduleName
的值调用该函数,如下所示:
S.(str_moduleName)()