2
생성자에서 인스턴스 이름에 대한 지식 (문자열로 추출)을 가질 수있는 클래스를 갖고 싶습니다.생성자에서 인스턴스 이름을 알고있는 Matlab 클래스
생성자에서 인스턴스 이름에 대한 지식 (문자열로 추출)을 가질 수있는 클래스를 갖고 싶습니다.생성자에서 인스턴스 이름을 알고있는 Matlab 클래스
는 방법이 없습니다
작동하려면 추악한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
클래스의 경우 여러 변수가 과 같은 개체를 가리킬 수 있으므로 기술적으로 개체에 이라는 이름이 지정됩니다.
'
왜해야합니까? 'handle' 클래스는 참조에 의해 전달되기 때문에 기술적으로 * 동일한 * 객체를 가르키는 * 두 개의 변수를 가질 수 있습니다. 따라서 두 개의 이름이 있습니다 * – Suever
죄송합니다. 나에게 주어진 코드를 복사했습니다. 내 첫 번째 Matlab 클래스입니다. 핸들에서 파생되는 것은 정확하지 않을 것입니다. 인스턴스는 실제로 객체의 외부 데이터베이스를 참조하므로 (따라서 고유 한 식별자가 필요합니다) 인스턴스를 복사 할 수 없게해야합니다. – Davide
실제로 달성하려는 것을 설명하면 WE가 더 나은 답변을 줄 수 있습니다. – Suever