24 sierpnia 2014

Operatory logiczne, znaki specjalne i porównywanie wartości

Dziś czeka Cię czytelniku trochę teorii. Niestety jest ona niezbędna by sprawnie posługiwać się zmiennymi, instrukcjami warunkowymi i pętlami. Postaram się przedstawić ją w taki sposób byśmy przeszli przez nią bezboleśnie nie przysypiając przed monitorem, a w kolejnym wpisie spróbujemy wykorzystać nowo nabytą wiedzę w praktyce.

Operatory logiczne

Aby bezproblemowo posługiwać się instrukcjami warunkowymi i pętlami niezbędne jest porównywanie wartości zmiennych. W Taskerze można tego dokonać na dwa sposoby. Pierwszy sposób to tzw. uproszczony, drugi to wyrażenia regularne (RegEx), o którym napiszę przy innej okazji.
Dziś zajmiemy się sposobem uproszczonym realizowanym przez operatory logiczne oraz uniwersalne operatory Matches/Not Matches. Wykorzystując je porównujemy prawy parametr czyli wzór do wartości po lewej stronie.
Wzór (prawy parametr) możemy definiować wykorzystując znaki specjalne.

Znaki specjalne

  • / oznacza operator logiczny lub czyli wzór zielony/czerwony będzie pasował do wartości czerwony lub do wartości zielony
  • * oznacza dowolną ilość dowolnych znaków czyli wzór 123* będzie pasował do wartości 123 ale także do 123DOM
  • + oznacza jeden lub więcej dowolnych znaków czyli wzór 123+ nie będzie pasował do wartości 123, a będzie pasował do wartości 123D
  • ! oznacza negację czyli !*zielony*/*czerwony* będzie pasował do wszystkich wartości poza tymi zawierającymi zielony lub czerwony

Wielkość liter w porównaniach

Wielkość liter nie gra roli przy porównywaniu wartości chyba, że wzór (prawy parametr) ma w zapisie wielkie litery. Wtedy wielkość liter ma znaczenie.

Przykłady porównywania wartości

  • pomoc pasuje do pomoc ale nie do pomocny
  • pomoc* pasuje do pomoc i do pomocny
  • *nie* pasuje do każdego ciągu znaków zawierającego nie
  • 123+ pasuje do 123 i przynajmniej jednego znaku np. 1234
  • + pasuje do przynajmniej jednego znaku (niepusta wartość)
  • nie*domu pasuje do niedaleko domu i nie mam domu
  • Pomoc/*gratis pasuje do Pomoc lub każdego ciągu znaków kończącego się ciągiem gratis

Porównywanie numerów telefonów kontaktów

W Taskerze porównywanie numerów telefonów kontaktów dostało kilka dodatkowych tagów specjalnych by ułatwić nam nieco życie.

  • C:ANY pasuje do numeru telefonu jakiegokolwiek kontaktu
  • C:FAV pasuje do numeru telefonu jakiegokolwiek kontaktu należącego do ulubionych
  • CG:nazwa_grupy pasuje do numeru telefonu jakiegokolwiek kontaktu z grupy nazwa_grupy

Przykłady porównywania numerów telefonów

  • !C:ANY pasuje do każdego numeru telefonu nie zapisanego w kontaktach
  • 025*/Janek* pasuje do numeru telefonu zaczynającego się 025 lub do numeru telefonu kontaktu, którego początek to Janek
  • C:FAV/0123456789 pasuje do numeru telefonu jakiegokolwiek kontaktu należącego do ulubionych lub numeru 0123456789
  • CG:*Rodzina*/CG:Praca pasuje do numerów kontaktów z grupy, która ma w nazwie ciąg Rodzina lub do numerów kontaktów z grupy Praca

Matches (~)

Z operatorem Matches warunek będzie spełniony jeśli obie wartości będą do siebie pasowały np. moje profile ~ *profil*

Not Matches (!~)

Z operatorem Not Matches warunek będzie spełniony jeśli obie wartości nie będą do siebie pasowały np. moje profile !~ *profil

Maths: Less Than (<)

Oba porównywane parametry muszą być wartościami liczbowymi i pierwszy musi być mniejszy od drugiego np. 3 < 6 by warunek był spełniony.

Maths: Greater Than (>)

Oba porównywane parametry muszą być wartościami liczbowymi i pierwszy musi być większy od drugiego np. 9 > 6 by warunek był spełniony.

Maths: Equals (=)

Oba porównywane parametry muszą być wartościami liczbowymi i obie wartości muszą być sobie równe np. 3 = 3 by warunek był spełniony.

Maths: Not Equals (!=)

Oba porównywane parametry muszą być wartościami liczbowymi i muszą być od siebie różne np. 3 != 6 by warunek był spełniony.

Maths: Is Even

Parametr musi być wartością liczbową parzystą by warunek był spełniony.

Maths: Is Odd

Parametr musi być wartością liczbową nieparzystą by warunek był spełniony.

Is Set / Isn't Set

Warunek jest spełniony jeśli dana zmienna ma ustawioną wartość/nie ma ustawionej wartości.

W praktyce można stosować operatory Matches/Not Matches w przypadku wartości liczbowych. Trzeba jedynie pamiętać, że w takim przypadku Tasker nie porównuje wartości liczbowych jako takich ale znaki. Jeśli znaki pasują to warunek będzie spełniony.

Warunki wykonania akcji

W konfiguracji każdej prawie akcji możliwe jest dodanie warunków, niezbędnych do spełnienia by ta akcja została wykonana.

Pomiędzy poszczególnymi warunkami wykonania akcji (jeśli jest ich więcej niż jeden) mogą za chodzić zależności And (wszystkie warunki muszą być spełnione), Or (przynajmniej jeden warunek musi być spełniony oraz Xor (dokładnie jeden warunek musi być spełniony).
Poza tym są jeszcze do dyspozycji operatory And+, Or+ oraz Xor+ czyli operatory z większym pierwszeństwem. Ogólnie zasada jest taka, że im bardziej na prawo przesunięty klawisz operatora to ma on większe pierwszeństwo. Dodatek + do nazwy operatora zwiększa pierwszeństwo danego warunku.