Create enumeration instance by comparison to variable

4 visualizzazioni (ultimi 30 giorni)
Can an instance of an enumeration class be created by comparison to a string or character of the same name as the enumeration? Can it be done by referencing its index in the enumeration list? I want to use the enumeration class to manage the execution of a sequence of functions. Below is my enumeration class (edited for privacy):
classdef types
properties
prop1
prop2
end
enumeration
type1 (1,0)
type2 (0,1)
type3 (1,1)
end
methods
function obj = types(p1,p2)
obj.prop1 = p1;
obj.prop2 = p2;
end
end
end
A function asks the user to select either a single type or a sequence of types. Here's some of the code:
function seq = sequence(choice)
list = enumeration('types');
if choice == 0
[ind,sel] = listdlg('PromptString',"Select a type.",...
'SelectionMode','single','ListString',list);
if sel == 1
switch list(ind)
case types.type1
seq = types.type1;
case types.type2
seq = types.type2;
case types.type3
seq = types.type3;
end
else
seq = 0;
end
elseif choice == 1
% prompts to create sequence and assign enumeration member in a
% similar manner
end
end
Is there a more efficient way to assign the enumeration member to the 'seq' variable?

Risposta accettata

AstroJon
AstroJon il 8 Dic 2021
Nevermind... This totally works:
seq = list(ind);
<sigh>
As for using the enumeration class to manage the execution of a sequence of functions, I'm still working on that and happy to take suggestions.
  1 Commento
AstroJon
AstroJon il 13 Dic 2021
If anybody is interested, my solution to the second question (using the enumeration class to manage the execution of a sequence of functions) is:
classdef main < handle
properties
property
end
methods
function obj = main()
% Use a listdlg to prompt the user to select the method of
% defining the sequence.
obj.property = sequence()
% where sequence() is the class that is instantiated to collect
% the sequence from the user.
for m=1:length(obj.property)
exec = strcat(string(obj.property),'add additional parts of func name here if needed');
results = feval(exec);
end
end
end
end

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Enumerations in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by