Hi,
I only write the general facts, because of my bad englich skills!
I have developed a select/case statement for the uBasic interpreter. Currently
2 versions are available (multi and single statement version).
Multi statement:- close to if/then/endif
- slower because every case need 10ms, but save
- use up 4 times recursive
Single statement:- only one statement, needs only one tick
- my tests are all fine, but I could be critical because of the 10ms (If anybody knows more, please let me know)
- use X Times recursive
Special features:- you can use ranges: case 1 to 5;
- you can combine various values: case 1,3,5;
- you can make a default statement. It means if no case was true
Syntax:select EXPRESSION
case EXPR. [to EXPR.] | [,EXPR.2[, ...]]; STATEMENT
.
.
[case_else STATEMENT]
end_select
Example:
for x=1 to 7
select x
case 1; gosub "neu"
case 7; goto "EXIT"
case 2,4; print "x=2 | x=4"
case 2 to 5; print "x=3 | x=5"
case_else print"x=6"
end_select
next x
:EXIT
print "fertig"
end
:neu
print "sub"
for y=1 to 2
select y
case 1; print "y=1"
case_else print"y=2"
end_select
next y
return
Output (multi/singleVersion):
sub
y=1
y=2
x=2 | x=4
x=3 | x=5
x=2 | x=4
x=3 | x=5
x=6
fertig
What do you think about this statement?
I attached the 2 Versions as diff files
CHDKLover