2012-05-09 2 views
3

SetProperty 메서드가있는 핸들 클래스의 1x2 객체 배열이 있다고 가정 해 보겠습니다. arrayfun을 사용하여 각 클래스에 대해 SetProperty 메서드를 호출하고 속성 값을 설정하는 데 사용할 벡터를 사용할 수 있습니까?핸들 클래스가있는 Matlab Arrayfoon

답변

1

예, 할 수 있습니다

class Foo < handle 
     methods(Access=public) 
      function SetProperty(this,val) 
       assert(numel(this)==numel(val)); 
       for i=1:numel(this) 
         this(i).prop = val(i); 
       end 
      end 
     end 
end 

을 그럼 당신은 벡터를 만들 수 있으며, 메소드를 호출

arrayfun(@(x,y)x.SetProperty(y), yourHandleObjects, theValues) 
+0

감사합니다! 이것은 간단합니다. 구문에 대해 왜 많은 어려움을 겪고 있는지 알 수 없습니다. – krapht

3

또한 SetProperty에 대한 호출이 벡터화 될 수 있도록 클래스를 디자인 할 수 있습니다 그것에 직접 :

f = repmat(Foo(),[1 2]); 
    f.SetProperty([5 3]); 
+0

나는 이것을 전에도 사용 해왔다. 이제 arrayfun을 사용하는 것이 더 많은 동기가되었지만, 함수에 전달되는 것을 제어 할 수 있기 때문에. 이것은 많은 중첩 클래스가있을 때 문제 였고, 자기가 원하는 클래스 나 그 슈퍼 클래스를 참조 할 것인지를 결코 알지 못했습니다. – krapht

+0

@AndrewAshworth 당신이 말하는 것은 흥미로운 것 같습니다. 예를 들어 줄 수 있습니까? (내 자신의 교육 목적을 위해) –