2016-09-30 2 views
2

생성자에서 인스턴스 이름에 대한 지식 (문자열로 추출)을 가질 수있는 클래스를 갖고 싶습니다.생성자에서 인스턴스 이름을 알고있는 Matlab 클래스

+0

왜해야합니까? 'handle' 클래스는 참조에 의해 전달되기 때문에 기술적으로 * 동일한 * 객체를 가르키는 * 두 개의 변수를 가질 수 있습니다. 따라서 두 개의 이름이 있습니다 * – Suever

+0

죄송합니다. 나에게 주어진 코드를 복사했습니다. 내 첫 번째 Matlab 클래스입니다. 핸들에서 파생되는 것은 정확하지 않을 것입니다. 인스턴스는 실제로 객체의 외부 데이터베이스를 참조하므로 (따라서 고유 한 식별자가 필요합니다) 인스턴스를 복사 할 수 없게해야합니다. – Davide

+0

실제로 달성하려는 것을 설명하면 WE가 더 나은 답변을 줄 수 있습니다. – Suever

답변

1

는 방법이 없습니다

작동하려면 추악한

A = mysession; A.build 

구문을 필요로

classdef mysession 

methods (Access = public) 

    function this=mysession (varargin) 
    this.cargs=varargin; 
    this.built=false; 
    end 

    function id=build(this) 
    id=this.mynameis; 
    this.id = id; 
    %% instructions needing id 
    built=true; 
    end 

    function name = mynameis (this) 
    name=evalin ('caller', 'inputname'); 
    end 
end 

properties (Access=private) 
    id 
    built 
    cargs 
end 
end 

... : 순간

내가 같은 이름 추출을했다 함수 또는 클래스 생성자의 출력을 할당하는 데 사용되는 변수 이름을 가져옵니다. 호출 한 작업 영역에서 객체의 변수 이름을 얻는 유일한 방법은 클래스의 다른 메소드를 호출하여 inputname을 사용하여이를 쿼리 할 수있는 유일한 방법입니다.

왜 이렇게해야하는지 명확하지 않지만 강력하게 권장하지 않습니다. 특히 handle 클래스의 경우 여러 변수가 과 같은 개체를 가리킬 수 있으므로 기술적으로 개체에 이라는 이름이 지정됩니다.

+0

' 파생은 실수로 거기에있었습니다. – Davide

관련 문제