Enumeration class input modification possible?

1 Ansicht (letzte 30 Tage)
Kristian Dimitrov
Kristian Dimitrov am 27 Jan. 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 Kommentare
Matt J
Matt J am 27 Jan. 2025
Bearbeitet: Matt J am 27 Jan. 2025
what does "directly accept" mean? What would the syntax you are after look like?
Kristian Dimitrov
Kristian Dimitrov am 28 Jan. 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'.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Dirk Engel
Dirk Engel am 27 Jan. 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 Kommentar
Kristian Dimitrov
Kristian Dimitrov am 28 Jan. 2025
That is what I was thinking as well. No sneaky way arround the problem :(. Thank you for the comment!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Produkte


Version

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by