Atomare Typen / Atomare upgrades

Atomare upgrades

Im offenen Parser-Level (Standard) werden atomare Typen automatisch in einen größeren Typ umgerechnet.

Long l = 123
l = 45b
Describe l

In diesem Beispiel speichert die Variable "l" nur den Typ "Long". Somit muss ein zugewiesenes Objekt zwingend vom Typ "Long" sein.

Da sich ein Byte aber verlustfrei und klar in den Typ "Long" umwandeln lässt, erfolgt dies hier automatisch.

Beispiele

Hier wird eine Ganzzahl in den Typ "Dec" umgewandelt:

e = 12.345
e = 89
Describe e

Umwandlung vom Typ "Short" in den Typ "Dec":

DecNumber d = 123s
Describe d

Umwandlung von "Char", "Int", "Dec" zu "Str": s = "foo" Describe s s = 'x' Describe s s = 123 Describe s s = 456.789 Describe s

Funktionen und Konstruktoren

Auch bei der Übergabe von atomaren Werten an eine Funktion oder eine neue Instanz, wird der Typ ggf. umgerechnet.

::foo( Str s )
	Describe s

this.foo( 123 )

Grenzen

Wichtig:
Zulässig sind nur verlustfreie und klare Upgrades.

Byte b = 12l

Da die Zahl 12 gut in den Bereich vom Typ "Byte" (-128 bis 127) passt, ist einerseits eine klare Umwandlung möglich. Jedoch hat der Typ "Long" einen sehr viel größeren Zahlenbereich, weshalb dieses Downgrade somit nicht automatisch durchgeführt und ein Fehler geworfen wird.

In diesem Fall muss die Umwandlung explizit vorgenommen werden:

Byte b = 12l.toByte

Unterbinden

Der JayMo-Parser bietet verschiedene Level mit strengeren Regeln an. Bereits ab dem Level "low" wird das automatische Upgrade deaktiviert:

>low
- Powered by OghsWiki -

 

 

Unterstützen

Die Entwicklung von "JayMo" wird derzeit nur durch Eigeninitiative ermöglicht.

Erhalten:  0 €