using switch, case and comparing strings

조회 수: 139 (최근 30일)
Keith Holmlund
Keith Holmlund 2018년 6월 21일
댓글: belhassan haj mansour 2019년 1월 9일
I am using a function with varargin that imports strings and numbers but the first input is always a string. based off what it says, using switch and case, I want the function to do something different. So if for example, str = char(varargin{1}) = 'hot dog' and I had
switch str
case str == 'hot dog'
case str == 'burger'
When I do this I get an error, what am I doing wrong
  댓글 수: 2
dpb
dpb 2018년 6월 21일
편집: dpb 2018년 6월 21일
str = varargin{1} = 'hot dog'
is illegal syntax and the SWITCH construct is missing any action statements in the cases plus isn't closed.
A properly formed SWITCH construct will work just fine with string or character variables; it will have an issue with a cellstr() argument unless you take care to dereference it.
We need to see the actual function to debug, not just bits and pieces.
Keith Holmlund
Keith Holmlund 2018년 6월 21일
편집: Keith Holmlund 2018년 6월 21일
It looks something like this, The first input is 'hot dog'. When run I enter Menu('hot dog','ketchup'). I am getting an error at the first case line
function Menu(varargin)
cat = char(varargin{1});
switch cat
case cat == 'hot dog'
condiment = char(varargin{2});
subfunction
case cat == 'burger'
bun = char(varargin{2});
subfunction2
end

댓글을 달려면 로그인하십시오.

채택된 답변

OCDER
OCDER 2018년 6월 21일
편집: OCDER 2018년 6월 21일
The switch statement is used incorrectly. Remove the "str ==" after case.
function Menu(varargin)
%varargin = {'hot dog', 1, 2, 3};
str = varargin{1};
switch lower(str) %make it case insensitive. all lower cases
case 'hot dog'
disp('Delicious hot dogs!')
case 'burger'
disp('Mouth-watering burgers!')
end
Actually, what was the Error message? I should have waited for your response to @dpb since there are multiple issues, as already pointed out.
  댓글 수: 3
OCDER
OCDER 2018년 6월 21일
편집: OCDER 2018년 6월 21일
Remove 'cat == ' after your case. And DO NOT use "cat" as a variable, as that's a built-in matlab function for concatenate arrays.
help cat
I like to label my variables with 1st letter caps, just in case I accidentally name a variable the same as a matlab function.
Walter Roberson
Walter Roberson 2018년 6월 21일
I tested with OCDER's code, and it looks fine to me.
OCDER's code does not use any string data types and so could not get that message.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

belhassan haj mansour
belhassan haj mansour 2019년 1월 9일
편집: belhassan haj mansour 2019년 1월 9일
HELLO
im trying to control a rocker switch with another one in app designer, for example i have rockerswitch1 in the position 'off' and rockerswitch2 also in position 'off' . what i need is when i put rockerswitch1 in position 'on', the rockerswitch 2 become in the position 'on' too but i can't find the right function to do so
CAN ANYONE HELP ME WITH THIS PLEASE ?
  댓글 수: 2
Walter Roberson
Walter Roberson 2019년 1월 9일
Please create a new Question for this .
belhassan haj mansour
belhassan haj mansour 2019년 1월 9일
done

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by