Zmienne

Zmienne dostępne są podczas pojedynczego wywołania strony ale mogą być przekazywane przez parametry wywołania strony w adresie URL. Wszystkie wywołania strony z przekazaniem parametrów dotyczą przekazania parametrów typu String. Aby otrzymać parametry danego typu należy dokonać konwersji typów za pomocą specjalnych funkcji.

Przypisanie wartości do zmiennej

$=(variableName, value)


Odwołanie do wartości zmiennej

$variableName


Przypisanie tablicy wartości do zmiennej

$=(variableName, [value1, value2, value3, ...]) 


Odwołanie do tablicy wartości zapisanej w zmiennej

$variableName[]


Odwołanie do drugiego elementu takiej tablicy (elementy tablic są indeksowane od 0)

$variableName[1]


Wszystkie zmienne są traktowane jak tablice a odwołanie do wartości zmiennej jest równoważne z odwołaniem do pierwszego elementu tablicy (elementu o indeksie 0). Zatem zapis

$variableName


jest równoważny z

$variableName[0]


Zmiana typu wartości zmiennej przez rzutowanie

(TypeName)$variableName


Zmienna, która nie istnieje albo której nie została przypisana żadna wartość ma wartość pustą określoną stałą null typu Object. Zmiennej można także przypisać wartość pustą

$=(variableName, null)

W celu przypisania pustych wartości wszystkim elementom tablicy stosuje się rzutowanie typu stałej null

$=(variableName, (Object[])null)


Każda zmienna w kodzie aplikacyjnym programu jest traktowana jako zmienna typu Object. Dlatego przekazanie wartości zmiennej jako parametru wywołania funkcji wymaga rzutowania lub konwersji typu (o ile funkcja taka oczekuje typu argumentu innego niż Object). Wymaganie to dotyczy również przekazywania wartości null.

Aby umieścić w kodzie aplikacyjnym znak $ należy napisać

$$


Począwszy od wersji 6.2.10 jPALIO znaki specjalne można uzyskiwać korzystając z konstrukcji

$\SPECIAL_SIGN


tak więc znak dolara można uzyskać również przez

$\$

Zmienne lokalne

Wraz z wersją 5.0.0 jPALIO wprowadzone zostały zmienne lokalne. Nazwy zmiennych lokalnych poprzedzane są znakiem @. Zmiennych lokalnych można używać bez groźby nadpisania przez inny obiekt lub rekurencyjne wywołanie tego samego obiektu

$@=(text, "Some text")
Text: $@text

Zmienne lokalne mają statyczne zapamiętywane typy na podstawie pierwszego przypisania. Można zatem ponownie przypisywać wartości lecz tylko tego typu - zapamiętany typ jest podstawiany pod każde użycie zmiennej (nie jest wymagane rzutowanie)

$@=(value, 2)
2+2 = $+($@value, $@value)

Aby zapamiętany został bardziej szczegółowy typ należy rzutować przy pierwszym przypisaniu

$=(ID, 7)
$@=(ID, (Long)$ID)
$@ID

Specjalna instrukcja umożliwia szybkie przypisanie parametrów wywołania obiektów do zmiennych lokalnych wraz z zapamiętaniem typów

$#params(Long id, String action, Object[] parameters)

co jest równoważne z zapisem

$@=(id, (Long)$0)
$@=(action, (String)$1)
$@=(parameters, $2[])
Na rzecz zmiennych lokalnych można wywoływać metody
$@=(text, "Some string")
Text: $@text <br/>
Length: $@text.length() <br/>
Some string? $@text.contains("string") <br/>

Wszystkie błędy związane z wywoływaniem metod są wyłapywane w momencie kompilacji ponieważ typy zmiennych lokalnych są znane.