Как получить имя перечисления в MATLAB - PullRequest
7 голосов
/ 22 февраля 2010

Я определяю перечислимый тип в MATLAB

classdef(Enumeration) Color < Simulink.IntEnumType
  enumeration
    RED(0),
    GREEN(1),
    BLUE(2),
  end
end

Я могу назначить это:

>> x = Color.RED    
x = 
    RED

Я могу отобразить это так:

>> disp(x)
    RED

или как это

>> x.display()
x =
    RED

Как я могу получить доступ к этому имени ("КРАСНЫЙ") в виде строки?

Другими словами, я ищу что-то вроде:

s = x.toString()

или

s = tostring(x)

оба из которых не работают.

Ответы [ 2 ]

8 голосов
/ 22 февраля 2010

Вы можете использовать:

» str = char(Color.RED)
str =
RED
» class(str)
ans =
char

Вы даже можете переопределить поведение по умолчанию:

classdef(Enumeration) Color < int32
 enumeration
  RED(0)
  GREEN(1)
  BLUE(2)
 end

 methods
  function s = char(obj)
   s = ['Color ' num2str(obj)];
   %# or use a switch statement..
  end

  function disp(obj)
   disp( char(obj) )
  end
 end
end

и сейчас:

» char(Color.BLUE)
ans =
Color 2
0 голосов
/ 03 января 2019

Другой подход, общий, в вашем праве звонка:

strtrim(matlab.unittest.diagnostics.ConstraintDiagnostic.getDisplayableString(Color.BLUE))

Таким образом, вы можете сохранить специфическую для класса реализацию disp () и / или char ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...