【发布时间】:2021-03-16 01:33:07
【问题描述】:
我有一些类,我为其创建了几个常量属性。下面是一些示例代码:
classdef genericClassName < handle
properties (Constant)
Name = 'genericClassName'
Description = 'description of the class'
end
...
在主代码中,我通过分配类句柄来创建对象,在这种情况下,类句柄来自一个单独的函数传递的预分配值。就像
fuctionModel = @genericClassName;
稍后我将创建其他对象并将 functionModel 的值传递给这些类。到目前为止,一切正常。
Matlab documentation 表示这些常量属性的访问方式如下:
genericClassName.Name
genericClassName.Description
我可以在命令行中输入它并产生所需的结果,给出 Name 或 Description 属性的值 - 分配给常量属性的相同值.但是,我只有句柄,它在 functionModel 中保存为 @genericClassName。
这是我的问题:当我只有句柄时,如何引用这个类及其常量属性,并在前面加上它的 at 符号?
更新 缺少更简单或简洁的答案,@Edric 和@CrisLuengo 的答案组合似乎有效。例如:
mc=meta.class.fromName(func2str(functionalModel));
result = eval([mc.Name '.Description']);
将名称为Description 的常量放入变量result。这可用于我需要的东西,我可能只是将它包装到一个函数中。
【问题讨论】:
-
如果您要这样做,只需执行
eval([func2str(functionalModel),'.Description'])。现在您从名称中获取类描述,并且仅使用该描述来获取名称,这似乎很愚蠢。 -
这不仅仅是名字的问题,克里斯。这些只是示例
-
我的意思是,如果你不打算使用
mc.PropertyList,就不要使用mc。mc.Name正是您放入mc=meta.class.fromName(...)的字符串。您添加到问题中的代码非常多余。另外,请将其发布为答案,问题不应包含答案。如果你愿意,你可以接受你自己的答案。 -
重读您的评论。是的,不需要 meta.class。 func2str 提取我正在寻找的内容。
标签: matlab class class-properties