Expected one output from a curly brace or dot indexing expression, but there were 2 results, when re-initialize an object array
    7 views (last 30 days)
  
       Show older comments
    
    Cheng-Hung He
 on 13 Mar 2021
  
    
    
    
    
    Edited: Cheng-Hung He
 on 19 Mar 2021
            I am encountering this issue when I was working on clearing/re-initializing an object array.
A sample code snippet is here:
classdef classObj1
    properties
        a;
        b;
        c;
    end
end
classdef classObj2
    properties (Access = private)
        obj1_arr;
    end
    methods
        function addtoArr(obj, e)
            obj.obj1_arr(end + 1) = e;
        end
        function clearArr(obj)
            obj.obj1_arr = classObj1.empty(1, 0);
        end
        function setArr(obj, r)
            obj.obj1_arr = r;
        end
    end
end
Everytime I create an classObj2, I will initialize its property, so the obj1_arr should be an 1d empty array of classObj1.
a = classObj2();
a.setArr(classObj1.empty(1, 0));
and add something to the array, everything is fine until here.
for i = 1:10
    o = classObj1();
    o.a = 1; o.b = 2; o.c = 3;
    a.addtoArr(o)
end
However, when I try to call the clearArr() function, I get the following error message:
Expected one output from a curly brace or dot indexing expression, but there were 2 results.
on the line:
obj.obj1_arr = classObj1.empty(1, 0);
I have done my work on reading some posts for the reason and solution. e.g. using delete(), clear(), or  obj.obj1_arr(:) = []; Unfortunately they don't work, and the identical error message is presented on the same line.
What I am trying to do is just clearing all elements in the obj1_arr since I would like to reuse it later without the data set in previous rounds, which is similar to list.clear() in python.
I appreciate any help that can assist me in solving this issue.
0 Comments
Accepted Answer
  Shubham Rawat
    
 on 17 Mar 2021
        Hi Cheng-Hung,
You had done spelling mistake inside the clearArr() function in the following line:
obj.obj1_arr = classObj1.empty(1, 0);
you had written classobj instead it is classObj.
Hope this Helps!
More Answers (0)
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
