Main Content

객체 배열 초기화하기

생성자 호출

객체 배열을 생성하는 동안 클래스 생성자가 객체 배열을 만들지 않더라도 MATLAB®이 인수 없이 클래스 생성자를 호출할 수 있습니다. 예를 들어, 다음과 같은 클래스를 정의한다고 가정하겠습니다.

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

배열을 생성하기 위해 다음 명령문을 실행합니다.

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

이 오류가 발생하는 이유는 MATLAB이 배열의 요소 1부터 6까지 초기화하기 위해 인수 없이 생성자를 호출하기 때문입니다.

이 클래스는 입력 인수가 없는 생성자 구문을 지원해야 합니다. 이 오류를 해결할 수 있는 간단한 방법은 nargin을 테스트하여 nargin == 0인 경우 코드가 실행되지 않고 오류도 발생하지 않게 하는 것입니다.

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

수정된 클래스 정의를 사용하면 앞의 배열 대입문이 오류 없이 실행됩니다.

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

  1x7 SimpleValue array with properties:

    Value

배열 요소 a(1,7)에 할당된 객체는 생성자에 전달된 입력 인수를 속성에 할당되는 값으로 사용합니다.

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

    Value: 7

MATLAB이 입력 인수 없이 요소 a(1,1:6)에 포함된 객체를 생성했습니다. 속성의 디폴트 값은 빈 []입니다. 예를 들면 다음과 같습니다.

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

    Value: []

MATLAB은 SimpleValue 생성자를 한 번만 호출하고 반환된 객체를 배열의 각 요소에 복사합니다.

객체 속성의 초기값

MATLAB이 인수 없이 생성자를 호출하여 객체 배열을 초기화하면 다음 중 하나와 같이 값 할당이 수행됩니다.

  • 속성 정의가 디폴트 값을 지정하는 경우 MATLAB이 이 값을 할당합니다.

  • 생성자가 입력 인수 없이 값을 할당하는 경우 MATLAB이 이 값을 할당합니다.

  • 위 상황에 해당하지 않을 경우 MATLAB이 빈 double형 값(즉, [])을 속성에 할당합니다.

관련 항목