Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

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

Was this topic helpful?