Main Content

Initialize Object Arrays

Calls to Constructor

During the creation of object arrays, MATLAB® can call the class constructor with no arguments, even if the constructor does not build an object array. For example, suppose that you define the following class:

classdef SimpleValue
   properties
      Value
   end
   methods
      function obj = SimpleValue(v)
         obj.Value = v;
      end
   end
end

Execute the following statement to create an array:

a(1,7) = SimpleValue(7)
Error using SimpleValue (line 7)
Not enough input arguments.

This error occurs because MATLAB calls the constructor with no arguments to initialize elements 1 through 6 in the array.

Your class must support the no input argument constructor syntax. A simple solution is to test nargin and let the case when nargin == 0 execute no code, but not error:

classdef SimpleValue
   properties
      Value
   end
   methods
      function obj = SimpleValue(v)
         if nargin > 0
            obj.Value = v;
         end
      end
   end
end

Using the revised class definition, the previous array assignment statement executes without error:

a(1,7) = SimpleValue(7)
a = 

  1x7 SimpleValue array with properties:

    Value

The object assigned to array element a(1,7) uses the input argument passed to the constructor as the value assigned to the property:

a(1,7)
ans = 
  SimpleValue with properties:

    Value: 7

MATLAB created the objects contained in elements a(1,1:6) with no input argument. The default value for properties empty []. For example:

a(1,1)
ans = 
  SimpleValue with properties:

    Value: []

MATLAB calls the SimpleValue constructor once and copies the returned object to each element of the array.

Initial Value of Object Properties

When MATLAB calls a constructor with no arguments to initialize an object array, one of the following assignments occurs:

  • If property definitions specify default values, MATLAB assigns these values.

  • If the constructor assigns values in the absence of input arguments, MATLAB assigns these values.

  • If neither of the preceding situations apply, MATLAB assigns the value of empty double (that is, []) to the property.

Related Topics