1. switch statement - case doesn't accept sequence elements?
- Posted by evanmars Dec 01, 2014
- 1213 views
Is this a bug? Cannot use a sequence element for the 'case' comparison.
constant numbers = {34553, 235452} procedure CheckNum(atom number) switch number do case numbers[1] then puts(1,"Base location\n") case numbers[2] then puts(1,"Second location\n") end switch end procedure CheckNum(34553)
crashes with:
this, of course, works:
sequence numbers = {34553, 235452} procedure CheckNum(atom number) switch number do case 34553 then puts(1,"Base location\n") case 235452 then puts(1,"Second location\n") end switch end procedure CheckNum(34553)
2. Re: switch statement - case doesn't accept sequence elements?
- Posted by ryanj Dec 01, 2014
- 1186 views
Is this a bug? Cannot use a sequence element for the 'case' comparison.
According to the manual, "The <val> in a case must be either an atom, literal string, constant or enum." I guess "atom" doesn't mean an element of a sequence that happens to be an atom? I have run into this as well, except i was trying to use an element of a sequence that was a string. I had to use an if statement in cases like this.
3. Re: switch statement - case doesn't accept sequence elements?
- Posted by jimcbrown (admin) Dec 01, 2014
- 1167 views
Is this a bug? Cannot use a sequence element for the 'case' comparison.
According to the manual, "The <val> in a case must be either an atom, literal string, constant or enum." I guess "atom" doesn't mean an element of a sequence that happens to be an atom? I have run into this as well, except i was trying to use an element of a sequence that was a string. I had to use an if statement in cases like this.
It should probably say 'literal number' instead of atom. You can't use variables in case statements, period.
4. Re: switch statement - case doesn't accept sequence elements?
- Posted by ryanj Dec 01, 2014
- 1174 views
Is this a bug? Cannot use a sequence element for the 'case' comparison.
According to the manual, "The <val> in a case must be either an atom, literal string, constant or enum." I guess "atom" doesn't mean an element of a sequence that happens to be an atom? I have run into this as well, except i was trying to use an element of a sequence that was a string. I had to use an if statement in cases like this.
It should probably say 'literal number' instead of atom. You can't use variables in case statements, period.
I see. What is the reason for that? Improved performance over an if statement?