PDA

Ver la Versión Completa : [ TUTORIAL ] Operadores Booleanos


GraphicAdventure
11/07/18, 14:00:20
Cuando se especifica más de una condición, hay que combinarlas con AND (todas tienen que ser verdaderas), OR (al menos una verdadera) o XOR (solo una puede ser verdadera).
Tasker permite además versiones de precedencia alta que son representadas con el carácter + detrás del booleano y visualmente se colocan automáticamente más a la derecha que el booleano anterior.

XOR < OR < AND < XOR+ < OR+ < AND+
Ordenados de menor a mayor prioridad.

Un booleano coge la condición a su izquierda si el booleano anterior tiene menor prioridad.
Esto es lo único que tenemos que entender.
Para visualizar mejor podemos "añadir" paréntesis.

%111=1 ; %222=2 ; %333=3

if %111=1 XOR+ %222=0 AND %333=0

Esta condición significa (1 XOR+ 0) Y 0, y es falsa.
Con un XOR significaría 1 XOR (0 Y 0) y sería verdadera.

Esto permite más flexibilidad, menos repeticiones/acciones y más contextos de estado con valor de variable.
Todo depende de la cantidad de factores que queramos cubrir simultáneamente.

Hice un perfil (sin utilidad actualmente) que usa como contexto de estado 5 condiciones.
No merece la pena profundizar sobre el perfil, es un entramado de circunstancias, es a modo de ejemplo.
Actualización Automática de Antenas Cercanas (https://www.htcmania.com/showthread.php?t=986558)

Estado: Valor de variable [ %Cellidvar Ajuste & %Cellidvar !~ *clean* & %%Cellidvar !~ *%CELLID* |+ %Cellidupdate No ajust. |+ %Cellidupdate ~ *%CELLID* ]

Traté de evitar que el perfil se activara constantemente con cada cambio de célula y sin el OR+ sería imposible.


%aaa=a ; %bbb=b ; %ccc=c ; %ddd=d ; %eee=e

%eee Ajustada & bbb !~ c & %aaa !~ a |+ %ddd No ajustada |+ %ccc ~ c

¿Cuál es el resultado de esta condición?
En Tasker se ve, pero la idea es entender.
Además, aquí se ven todos los valores claros pero cuando uno crea algo tiene que pensar en las posibles situaciones de colisión.

WillyWeb
11/07/18, 21:15:12
%111=1 ; %222=2 ; %333=3

if %111=1 XOR+ %222=0 AND %333=0

Esta condición significa (1 XOR+ 0) Y 0, y es falsa.
Con un XOR significaría 1 XOR (0 Y 0) y sería verdadera.


Si me permites. Creo que eso requiere un poco más de detalle ... :pensando:

IF %111=1 XOR+ %222=0 AND %333=0

... analizando cada parte ...

%111=1 > cierto
%222=0 > falso
%333=0 > falso

... y agrupando por prioridad quedaría ...

IF (cierto XOR+ falso) AND falso

... y como ...

cierto XOR falso > cierto

... queda ...

IF cierto AND falso

... que termina siendo falso.

En cambio, si modificamos ligeramente el IF inicial ...

IF %111=1 XOR %222=0 AND %333=0

... analizando y agrupando por prioridad ...

IF cierto XOR (falso AND falso)

... y analizando nuevamente ...

falso AND falso > falso

... queda ...

IF cierto XOR falso

... que termina siendo cierto.

El que quiera darle otra vuelta al tema puede leer este pequeño tutorial (en inglés) que me encontré hace tiempo ...

https://www.rorycodes.com/tasker-tip-tuesdays-multiple-action-if-conditions/

... aunque básicamente dice lo mismo que el resumen del compañero GraphicAdventure.

Gracias. :ok:

GraphicAdventure
13/07/18, 19:07:04
Di por hecho que con los datos se entiende el resultado y no quise abundar con información para no extender demasiado.
Dejé que la siguiente respuesta lo aclarase. ;-)

WillyWeb
13/07/18, 19:24:44
Si has trasteado un poco con esto se entiende perfectamente. Las aclaraciones van dirigidas a todos esos usuarios silenciosos que pasan por aquí para aprender o buscando despejar sus dudas.

Repito. Gracias por la aportación.