Enumeration class input modification possible?

2 visualizaciones (últimos 30 días)
Kristian Dimitrov
Kristian Dimitrov el 27 de En. de 2025
Comentada: Kristian Dimitrov el 28 de En. de 2025
Hello fellow Matlab users.
I am having a simple enumeration class to hold some predifinded allowed values as shown below
class (Sealed = true) myMode
enumeration
CLRWRITE
MAXHOLD
MINHOLD
AVERAGE
VIEW
BLANK
end
end
I am reading a file where the above values are writen with special characters or spaces for example "CLR/WRITE" or "Max Hold". So far i am just using regexprep externally to properly format the string before enumeration.
val = "CLR/WRITE";
val = regexprep(val, '[\W]', '');
mode = myMode(val);
Unrecognized function or variable 'myMode'.
I also implemented a static method "fromString" in the class that implements the regexprep code above. But still fills clunky.
myTrace.fromString("CLR/WRITE")
methods (Static = true)
function out = fromString(val)
val = convertCharsToStrings(val{:});
if isstring(val)
val = regexprep(val, '[\W]', '');
out = myMode(val);
end
end
end
I am curious if there is a way for the enumeration class to direclty accept "CLR/WRITE" as an input. Without access to a constructor, it seems imposible to implement, but I am open to suggestions. Supperclass definition maybe?
  2 comentarios
Matt J
Matt J el 27 de En. de 2025
Editada: Matt J el 27 de En. de 2025
what does "directly accept" mean? What would the syntax you are after look like?
Kristian Dimitrov
Kristian Dimitrov el 28 de En. de 2025
I am just wandering if there is a way to make myMode("CLR/WRITE") work. Considering that the enumeration value is CLRWRITE and due to the special character in the string matlab returns error 'CLR/WRITE' is not a member of enumeration 'myMode'.

Iniciar sesión para comentar.

Respuestas (1)

Dirk Engel
Dirk Engel el 27 de En. de 2025
A static method is the correct approach from an OOP perspective. In other programming languages, a static method for creating an object from a string is usally called "parse", but "fromString" is fine, too.
  1 comentario
Kristian Dimitrov
Kristian Dimitrov el 28 de En. de 2025
That is what I was thinking as well. No sneaky way arround the problem :(. Thank you for the comment!

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2024b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by