CASE
– Referencia de Lenguaje Spin
Existe un importante concepto respecto a este ejemplo. Si
X + Y
es 25, se activa P1, o se
MatchExpressions una a la vez en el orden que fueron listadas y solamente se ejecuta el
código de la primer expresión que coincide; las demás expresiones no se prueban
posteriormente. Esto significa que si teníamos reacomodado las líneas 25 y 20..30 para el
rango de 20..30 verifique primero si tenemos un problema en el código. Observe el ejemplo:
case X+Y
10, 15: !outa[0]
20..30: !outa[2]
25
: !outa[1]
El ejemplo anterior contiene un error porque
expresión nunca será probada porque la anterior, 20..30 se probara primero y como es cierta
se ejecuta su bloque y ninguna expresión se verifica posteriormente.
Variaciones de las instrucciones
El ejemplo mostrado arriba solo usa una línea por bloque Statement(s), pero cada bloque
puede tener varias líneas por supuesto. Además el bloque Statement(s) puede aparecer debajo,
y ligeramente indentado de la misma MatchExpression. Los ejemplos siguientes muestran las
variaciones.
case A
4
: !outa[0]
Z+1
: !outa[1]
!outa[2]
10..15: !outa[3]
case A
4:
!outa[0]
Z+1:
!outa[1]
!outa[2]
10..15:
!outa[3]
Pagina 64 · Manual Propeller v1.1
X + Y
es 20 a 30, se activa P2, etc. Esto es porque se verifica
'Prueba X+Y
'X+Y = 10 o 15? Activa P0
'X+Y entre 20 a 30? Activa P2
'X+Y = 25? Activa P1 <-- ESTO NUNCA CORRE
X + Y
'Prueba A
'A = 4? Activa P0
'A = Z+1? Activa P1
'y activa P2
'A entre 10 y 15? Activa P3
'Prueba A
'A = 4?
'Activa P0
'A = Z+1?
'Activa P1
'y activa P2
'A entre 10 y 15?
'Activa P3
X + Y
es 10 o 15, se activa P0 o si
podría ser igual a 25 sin embargo esa