Moduł Logic udostępnia zestaw operatorów logicznych, operatorów porównania oraz operatorów bitowych. Jako moduł standardowy jest dostępny w każdej instancji jPALIO, nie wymaga konfiguracji i nie wymaga poprzedzania wywołań metod nazwą modułu.
Zdefiniowane zostały następujące operatory logiczne:
Argumenty operatorów logicznych oraz wartości zwracane w wyniku użycia operatora są typu Boolean. Operator negacji jest jednoargumentowy, zaś wszystkie pozostałe mogą posiadają wersję jednoargumentową (argumentem jest tablica wartości typu Boolean) i dwuargumentową (argumentami są wartości typu Boolean).
Operatory porównania zdefiniowane w module Logic to:
Każdy z operatorów porównania jest dwuargumentowy i zwraca wartość typu Boolean. Operatory porównania można stosować do porównywania wartości następujących typów: String, Long, BigDecimal, Date. Ponadto operatory równości i różności można stosować do porównywania wartości typów Object i byte[]. Dla argumentów typu String operatory porównania występują w dwóch wariantach - uwzględniające wielkości liter przy porównywaniu oraz ignorujące wielkość liter przy porównywaniu.
Ostatnią grupę stanowią operatory bitowe:
Dopełnienie bitowe jest operatorem jednoargumentowym, zaś pozostałe - dwuargumentowymi. Argumenty operatorów bitowych i wartości zwracane w wyniku zastosowania operatora są typu Long.
Zestawienie
Poniżej znajduje się zestawienie wszystkich operatorów zdefiniowanych w module Logic
Metoda modułu Logic |
Symbol operatora | |
negacja | not | ! |
iloczyn logiczny | and | && |
suma logiczna | or | || |
suma logiczna modulo 2 | xor | brak |
większość | bigger | > |
mniejszość | lesser | < |
większość lub równość | biggerOrEquals | >= |
mniejszość lub równość | lesserOrEquals | <= |
równość | equals | == |
różność | notEquals | <> lub != |
większość (ignorowanie wielkości liter) |
biggerIgnoreCase | brak |
mniejszość | lesserIgnoreCase | brak |
większość lub równość | biggerOrEqualsIgnoreCase | brak |
mniejszość lub równość | lesserOrEqualsIgnoreCase | brak |
równość | equalsIgnoreCase | brak |
dopełnienie bitowe | bitwiseNot | ~ |
iloczyn bitowy | bitwiseAnd | & |
suma bitowa | bitwiseOr | | |
dopełnienie sumy bitowej | bitwiseXor | ^ |
Operatory posiadające symbol mogą być wywoływane na dwa sposoby - poprzez użycie nazwy metody $metoda(argumenty) lub poprzez użycie symbolu operatora $operator(argumenty).
Dla początkujących
Moduł Logic tłumaczy dlaczego w jPALIO stosuje się odwrotną notację polską. Wywołanie operatora jest de facto wywołaniem metody.
Przykład użycia podstawowych operatorów
$=(@sueAge, 16)
$=(@sueHasCat, true)
$=(@sueHasDog, true)
$if($>=($@sueAge, 18), {
$=(@sueOwn, "Suzanne")
}, {
$=(@sueOwn, "Suzie")
})
$if($&&($@sueHasCat, $@sueHasDog), {
$=(@sueOwn, $+([$@sueOwn, " has a cat and a dog"]))
}, {
$if($@sueHasCat, {
$=(@sueOwn, $+([$@sueOwn, " has a cat"]))
}, {
$if($@sueHasDog, {
$=(@sueOwn, $+([$@sueOwn, " has a dog"]))
}, {
$=(@sueOwn, $+([$@sueOwn, " has no pets"]))
})
})
})
$@sueOwn
Sortowanie tablicy ciągów znaków
$=(@fruits, ["apple", "banana", "mango", "strawberry", "pineapple", "blackcurrant", "pear"])
$=(@outerCounter, 1)
$for($-($length($@fruits), 1), {
$=(@innerCounter, 0)
$=(@innerLoop, $<($@innerCounter, $@outerCounter))
$for(@innerLoop, {
$if($biggerOrEqualsIgnoreCase((String)$@fruits[$@innerCounter], (String)$@fruits[$@outerCounter]), {
$=(@tmp, (String)$@fruits[$@outerCounter])
$=(@fruits, (String)$@fruits[$@innerCounter], $@outerCounter)
$=(@fruits, $@tmp, $@innerCounter)
})
$++(@innerCounter)
$=(@innerLoop, $<($@innerCounter, $@outerCounter))
})
$++(@outerCounter)
})
$@fruits