Logic


Opis

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łady

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

 

$=(@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

API

http://jpalio.torn.com.pl/modules/palio/modules/Logic.html