Matlab class 知道构造函数中的实例名称
Matlab class with knowledge of instance name in the constructor
我想要一个 class,它在其构造函数中可以知道(提取为字符串)其实例名称。
目前我是这样提取名字的:
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
需要丑的
A = mysession; A.build
为了工作的语法...
无法获取用于分配函数输出或 class 构造函数的变量名。正如您所发现的,在调用工作区中获取对象变量名称的唯一方法是调用 class 的另一个方法,此时您可以使用 inputname
来查询它。
除此之外,尚不清楚您为什么需要这样做,但我强烈反对这样做。特别是 handle
classes,你可以有多个变量指向 same 对象,因此对象在技术上有 multiple 名字。
我想要一个 class,它在其构造函数中可以知道(提取为字符串)其实例名称。
目前我是这样提取名字的:
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
需要丑的
A = mysession; A.build
为了工作的语法...
无法获取用于分配函数输出或 class 构造函数的变量名。正如您所发现的,在调用工作区中获取对象变量名称的唯一方法是调用 class 的另一个方法,此时您可以使用 inputname
来查询它。
除此之外,尚不清楚您为什么需要这样做,但我强烈反对这样做。特别是 handle
classes,你可以有多个变量指向 same 对象,因此对象在技术上有 multiple 名字。