3.1 Typy i konwersja wartości

 

W trakcie wykonywania operacji następuje automatyczna konwersja wartości argumentów. Sposób konwersji  zależy od użytego operatora lub funkcji oraz od typu argumentów.

Zasady konwersji są następujące:

·         W przypadku działań arytmetycznych uzgadniane są typy argumentów do typu o większym zakresie wartości.

12 + 10.10

 wynik 22.10, pierwszy argument konwertowany na liczbę zmiennoprzecinkową

·         Teksty użyte w wyrażeniach są z reguły konwertowane na liczby, za wyjątkiem operacji wykonywanych bezpośrednio na tekstach.

10 * Attribute(z1, LimitHi)

atrybut LimitHi zmiennej zostanie skonwertowany na tekst i pomnożony przez 10

10 + 1   

                wynik 11, operacja dodania dwóch liczb

”10” + 1               

                wynik 101, operacja połączenia tekstów

·         W miejscu użycia wartości logicznych, można używać wartości liczbowych. Wartości różne od zera oznaczają true, równe zero oznaczają false. Można też użyć tekstów ”true” i ”false”.

Variable(z1) ? red : blue

Jeżeli wartość zmiennej z1 jest różna od zera, wynikiem będzie tekst ”red”

·         Identyfikatory są konwertowane na teksty.

Ident1 + 1

wynikiem jest ident11 ze względu na wykonanie tekstowej operacji +

W niektórych wypadkach niezbędna może okazać się jawna konwersja typu wartości. Służą do tego funkcje rodziny To….

                ToDouble(Variable(z1))/Variable(z2)

Jeżeli zmienne z1 i z2 są typu całkowitego, to wynik zwykłego dzielenia byłby też liczba całkowitą. W wyrażeniu użyto jawnej konwersji pierwszej zmiennej, aby uzyskać dokładny wynik dzielenia.

ToUint32( Attribute(z1, LimitHi) ) + 10

Jawna konwersja atrybutu na funkcje powoduje, że operator + ma znaczenie dodawania arytmetycznego, a nie łączenia tekstów.