【发布时间】:2016-06-24 01:01:26
【问题描述】:
在 MATLAB R2014b 上,当您有一个 struct(或自定义类)具有一个标量 categorical 的字段时,当显示 struct 时,它将显示 [1x1 categorical] 而不是我想要实现的如下所示。
MWE:
struct.field = categorical({'category'})
输出:
struct =
field: [1x1 categorical]
我想要的输出:
struct =
field: category
或:
struct =
field: category [1x1 categorical]
我想要这个,因为我正在编写一些具有categorical 属性的类,该属性始终是标量;因为我根据定义知道这一点,所以我不需要将对象的类别显示为[1x1 categorical]。在显示自定义对象时,我希望它显示类别。
我可以在我的类方法中重载disp,但是我需要从disp 本身重写大量显示代码,而不是仅仅改变struct 字段中标量categorical 的显示方式.
关于如何实现这一目标的任何想法?如果您的答案涉及在类定义中重载disp,那么我想看看除了以我想要的方式显示categorical 属性之外,您还可以如何显示对象的其他属性,就像普通的disp(obj) 一样。你有任何想法或想法可能会帮助我写下我自己的答案,所以请分享。
【问题讨论】:
-
即使您在类中覆盖
disp,此行为也不会改变。您需要为结构本身编写一个自定义的disp方法,该方法将检查标量并适当地显示它。 -
@Suever - 没错,我想这是相当多的工作。我想知道是否存在我没有想到的另一种方式。我的第一个想法是通过首先显示类别来实际重写
disp,然后使用普通的disp函数来显示除类别字段之外的所有内容。如何调用非重载的disp函数?如果我在类方法中的重定义中使用disp,我会递归调用该类方法。
标签: matlab class oop struct categories