문제
하나의 입력이있는 생성자를 추가하고 특성을 명시 적으로 복사하는 것 외에도 손잡이 파생 클래스 용 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
이 방법을 더 유용하게 만듭니다
제휴하지 않습니다 StackOverflow