Namespace not recognized when used in a function called from an app
36 次查看(过去 30 天)
显示 更早的评论
I have an app that calls a function in an external file. The function references a class in a namespace directory (beginning with a +). I set up the paths in the app to include the namespace directory's parent folder and not the namespace directory. When the app calls the function, the function generates a MATLAB:UndefinedFunction error that it cannot locate the namespace.class. When I debug I stop at the problematic line and can access the namespace as normal in the debug command line. I can execute the code of the line where the error occurs, but if I click continue in the debugger the code fails.
Simplified example code:
MyProject/
+MyNameSpace/
MyClass.m
MyApp.mlapp
MyFunction.m
startup.m
MyClass.m:
classdef MyClass
properties (Constant)
value = 1;
end
end
MyFunction.m:
function value = MyFunction()
value = MyNameSpace.MyClass.value;
end
startup.m:
function startup
% Determine where your m-file's folder is.
folder = fileparts(which(mfilename));
% Add that folder plus all subfolders to the path.
addpath(folder);
end
Then inside the MyApp.mlapp I use the startupFcn method that is called by the constructor to call startup.m:
function startupFcn(app)
startup
end
And a button callback to call MyFunction:
% Button pushed function: RunButton
function RunButtonPushed(app, event)
value = MyFunction();
end
The returned error states:
"Unrecognized function or variable 'MyNameSpace'."
0 个评论
回答(1 个)
Taylor
2025-11-7,19:56
If value never changes you can just make it constant
classdef MyClass
properties (Constant)
value = 1;
end
end
Otherwise, you can create an instance of the class to access its properties
function value = MyFunction()
obj = MyNameSpace.MyClass();
value = obj.value;
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Debugging and Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!