'for' loops in app designer methods have a parsing problem
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Michael Cole
il 25 Nov 2022
Risposto: Image Analyst
il 26 Nov 2022
I've been debugging a simple app designer project. I have a list of strings that are country names. I want to delete all duplicates so I have a simple property 'ii' that is an index for traversing the list so I referred to it as 'app.ii' in a 'for' loop that is inside a working method. Matlab won't let me do it and says there is a parsing error at '.' It will let me use 'app.ii' in a 'while' loop or 'if' statement but as soon as I type it in a 'for' loop a red line appears under the period. 'ii' is a declared property of the app. Anyone have an idea what this seemingly straightforward 'for' loop is doing wrong?
0 Commenti
Risposta accettata
Walter Roberson
il 26 Nov 2022
It is a language limitation. for has never supported any kind of indexing for the loop control variable. The limitation saves defining a bunch of edge cases.
For example,
S(1).ii = 1;
S(2).ii = 7;
K = 1;
for S(K).ii = -2:2
S(K).ii
K = K + 1;
end
Does that record the value of K at the start of the loop and thereafter loop over S(1).ii ? Or should the second iteration be working with S(2).ii ?
1 Commento
Walter Roberson
il 26 Nov 2022
Under what circumstances would it be relevant for a different part of the application need to know what the current for loop index is, such that making it a property of the application as a whole would be appropriate ?
Creating a loop index as a property of the application as a whole would give a tendency for people to want to change the loop control variable. If you have a different method that can change your active loop control index, then that is seldom a good design strategy.
Più risposte (1)
Image Analyst
il 26 Nov 2022
Try this to remove duplicates
% Remove duplicates from arrays of countries.
% Using character arrays.
countries = {'USA', 'Belgium', 'UK', 'USA', 'Japan'}
uniqueCountries = unique(countries)
% Using strings.
countries2 = ["USA", "Belgium", "UK", "USA", "Japan"]
uniqueCountries2 = unique(countries2)
0 Commenti
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!