MATLAB OOP: Return value from constructor not possible
22 views (last 30 days)
I have a simple class called P that is supposed to Read and write a data structure to a file. It can be constructed like this:
P(filename,Data) % Construct object and write data to the file.
Now for the reading part I want to be able to get the Data structure by doing something like this:
Data = P(filename);
However MATLAB constructor is not allowed to return anything other than the object. So I am forced to change the interface such that the object is first created and then some method is used to return the data structure like this:
P1 = P();
Data = P1.load(filename);
Is there a better way to design the class (or any other solution) that reads the data with a single command just like writing.
More Answers (2)
Caglar on 2 Nov 2018
Edited: Caglar on 2 Nov 2018
You can use a static method. They can be used like functions. You could do Data=P.load(filename) with them but they do not automatically create an object.
On the other hand, MATLAB constructor is allowed to return variables other than the object.
function [obj,test] = P(inputArg1)
P with no properties.
Guillaume on 2 Nov 2018
However MATLAB constructor is not allowed to return anything other than the object.
I have not encountered any programming language where the object constructor returns anything other than the object. That's the definition of the constructor: special function that creates and return the object.
The whole design of your class doesn't make sense. This would make a lot more sense:
obj = P(filename); %create reader/writer that access a specific file
obj.write(data); %write data to file assigned to object
data = obj.read; %read data from file assigned to object
Otherwise, as you explained it, I see no need for a class. Regular functions would do the job.