이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

속성 set 메서드

속성 액세스 메서드 개요

속성 액세스 메서드에 대한 개요는 속성 액세스 메서드 항목을 참조하십시오.

속성 set 메서드 구문

값이 속성에 할당될 때마다 MATLAB®이 속성의 set 메서드를 호출합니다.

참고

속성 액세스 메서드를 직접 호출할 수는 없습니다. 이 메서드는 사용자가 속성값에 액세스할 때 MATLAB에 의해 호출됩니다.

속성 set 메서드의 구문은 다음과 같습니다. 여기서 PropertyName은 속성의 이름입니다.

값 클래스의 경우:

methods 
   function obj = set.PropertyName(obj,value) 
      ...
end
  • obj — 값이 할당되는 속성을 가지고 있는 객체

  • value — 속성에 할당되는 새 값

값 클래스 설정 함수는 호출하는 함수에 수정된 객체를 반환해야 합니다. 핸들 클래스는 수정된 객체를 반환할 필요가 없습니다.

핸들 클래스의 경우:

methods 
   function set.PropertyName(obj,value) 
      ...
end

속성 set 메서드에 디폴트 메서드 특성을 사용합니다. set 메서드를 정의하는 methods 블록은 특성을 지정할 수 없습니다.

속성 설정 값의 유효성 검사하기

속성 set 메서드를 사용하여 속성에 할당되는 값의 유효성을 검사할 수 있습니다. 속성 set 메서드는 새 속성값을 저장하는 데 필요한 동작을 수행하기 전에 입력값에 대한 오류 검사와 같은 동작을 수행할 수 있습니다.

classdef MyClass
   properties
      Prop1
   end
   methods
      function obj = set.Prop1(obj,value)
         if (value > 0)
            obj.Prop1 = value;
         else
            error('Property value must be positive')
         end
      end
   end
end

속성 set 메서드에 대한 예제는 속성을 특정 값으로 제한하기 항목을 참조하십시오.

set 메서드가 호출되는 경우

속성 set 메서드가 존재할 경우 값이 해당 속성에 할당될 때마다 MATLAB이 이 메서드를 호출합니다. 하지만 다음과 같은 경우에는 MATLAB이 속성 set 메서드를 호출하지 않습니다.

  • 값이 자체 속성 set 메서드 내에서 속성에 할당되는 경우. 이는 set 메서드가 재귀적으로 호출되지 않도록 하기 위해서입니다. 단, set 메서드가 호출한 함수로부터 속성값 할당이 수행된 경우에는 set 메서드가 호출됩니다.

  • 객체 생성자 함수가 호출되기 전에, MATLAB이 객체를 초기화하는 동안 속성에 디폴트 값을 할당하는 경우.

  • MATLAB이 값 객체(handle이 아닌 임의의 객체)를 복사하는 경우. 한 객체에서 다른 객체로 속성값을 복사할 때는 MATLAB이 set 메서드나 get 메서드를 호출하지 않습니다.

  • 속성의 AbortSet 특성이 true일 때 속성값에 할당된 값이 현재 값과 동일한 경우. 이 특성에 대한 자세한 내용은 Assignment When Property Value Is Unchanged 항목을 참조하십시오.

생성자에서 속성값 설정하기

생성자에서 속성값을 설정하면 속성 set 메서드가 호출됩니다. 예를 들어, PropertySetMethod 클래스는 Prop1 속성에 대해 속성 set 메서드를 정의합니다.

classdef PropertySetMethod
   
   properties
      Prop1 = "Default String"
   end
   
   methods
      function obj = PropertySetMethod( str )
         if nargin > 0
            obj.Prop1 = str;
         end
      end
      
      function obj = set.Prop1(obj,str)
         obj.Prop1 = str;
         fprintf( 'set.Prop1 method called. Prop1 = %s\n', obj.Prop1 );
      end
   end
end

입력 인수 없이 클래스 생성자를 호출하면 MATLAB이 set.Prop1 메서드를 호출하지 않습니다.

>> o = PropertySetMethod
o = 

  PropertySetMethod with properties:

    Prop1: "Default String"

생성자에서 속성값을 설정하면 속성 set 메서드에 대한 호출이 발생합니다.

>> o = PropertySetMethod("New string")
set.Prop1 method called. Prop1 = New string

o = 

  PropertySetMethod with properties:

    Prop1: "New string"

객체를 다른 변수에 복사하면 대입문의 우변 객체가 속성에 대해 디폴트가 아닌 값을 사용하더라도 MATLAB이 속성 set 메서드를 호출하지 않습니다.

a = o;
a.Prop1
a.Prop1

ans = 

    "New String"

관련 항목