문제

하나의 입력이있는 생성자를 추가하고 특성을 명시 적으로 복사하는 것 외에도 손잡이 파생 클래스 용 MATLAB 용 복사 생성기를 구현하는 더 좋은 방법이 있습니까?

obj.property1 = from.property1;  
obj.property2 = from.property2;

등.

감사합니다, Dani

도움이 되었습니까?

해결책

모든 속성을 복사 할 수 있다고 가정하는 빠른 솔루션을 원한다면 속성 기능을 살펴보십시오. 다음은 모든 속성을 자동으로 복사하는 클래스의 예입니다.

classdef Foo < handle
  properties
    a = 1;
  end
  methods
    function F=Foo(rhs)
      if nargin==0
        % default constructor
        F.a = rand(1);
      else
        % copy constructor
        fns = properties(rhs);
        for i=1:length(fns)
          F.(fns{i}) = rhs.(fns{i});
        end
      end
    end
  end
end

및 일부 테스트 코드 :

f = Foo(); [f.a Foo(f).a] % should print 2 floats with the same value.

다른 팁

matlab.mixin.copyable을 사용하여 핸들 객체 사본을 만들 수있는 또 다른 쉬운 방법이 있습니다. 이 클래스에서 상속하면 모든 속성을 복사하는 사본 메소드가 표시됩니다.

classdef YourClass < matlab.mixin.Copyable
...

a = YourClass;
b = copy(a); % b is a copy of a

이 복사 방법은 생성자를 호출하거나 속성의 함수를 설정하지 않고 사본을 만듭니다. 따라서 이것은 더 빠릅니다. 일부 방법을 재정의하여 복사 동작을 사용자 정의 할 수도 있습니다.

당신은 심지어 사용할 수 있습니다

try
 F.(fns{i}) = rhs.(fns{i});
end

이 방법을 더 유용하게 만듭니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top