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 名字。