Typecast/de

Um den Datentyp eines Wertes zu verändern muss ein sogenanntes Typecast durchgeführt werden (Typkonvertierung). Es gibt zwei Arten der Typkonvertierung: explizit und implizit. Explizite Typkonvertierung muss durch den Programmierer geschehen, während implizite Typkonvertierung durch den Compiler vorgenommen wird. LSL unterstützt implizite Typkonvertierung von String zu Key und Integer zu Float.
Unterstützte Typecasts	Unterstützte Typecasts	Unterstützte Typecasts	Unterstützte Typecasts	Unterstützte Typecasts	Unterstützte Typecasts	Unterstützte Typecasts	Unterstützte Typecasts	Unterstützte Typecasts
 	 	To 	To 	To 	To 	To 	To 	To
 	 	integer 	float 	string 	key 	list 	vector 	rotation
From 	integer 	x 	x 	x 	 	x 	 	
From 	float 	x 	x 	x 	 	x 	 	
From 	string 	x 	x 	x 	x 	x 	x 	x
From 	key 	 	 	x 	x 	x 	 	
From 	list 	 	 	x 	 	x 	 	
From 	vector 	 	 	x 	 	x 	x 	
From 	rotation 	 	 	x 	 	x 	 	x
== Syntax: () ==
Konvertiert in .
Wenn ein komplexer Ausdruck ist, kann es sinnvoll sein Klammern zu setzen: ()()
== Beispiele ==
<lsl>
string a = "1.5";
float b = (float)a;
integer c = (integer)a;
integer i;
i = (integer) 1.23; // 1
i = (integer) -1.23; // -1
i = (integer) "0123"; // 123
i = (integer) "0x12A"; // 298
i = (integer) " -5 "; // -5; leading white space is ignored
i = (integer) "105 degrees here, it is a nice day"; // 105; non-numeric text which follows numeric text is ignored
i = (integer) "String with no numbers"; // 0
float f;
f = (float) "6.2e1"; // 62.0
f = (float) " -16.2°C is seriously cold!"; // -16.2; (float)string also ignores leading whitespace and trailing non-numeric characters
// "6.2e1", "6.2e+1", "6.2E1", "6.2E+1" are all equivalent.
f = (float) "Nancy"; // any string beginning with "nan" (case insensitive) --
 // Mono only: NaN (not a number); LSO: causes a math error
f = (float) "infallible LSL!"; // any string beginning with "inf" (case insensitive) --
 // Mono only: Infinity; LSO: causes a math error
string s;
s = (string) -PI; // "-3.141593" with precision set to 6 decimal places by zero padding or rounding
s = (string) [1, 2.3, "a"]; // "12.300000a" again 6 decimal places, but ...
s = (string) <1.0, 2.3, 4.56>; // "<1.00000, 2.30000, 4.56000>" .. now with precision set to 5 decimal places
s = (string) <2, 4, 0.0, PI >; // "<2.00000, 4.00000, 0.00000, 3.14159>"
list l;
l = (list) ""; // [""]
l = (list) <1.0, 2.3, 4.56>; // ["<1.00000, 2.30000, 4.56000>"]
vector v;
v = (vector) "<1.0, 2.3, 4.56>"; // <1.0, 2.3, 4.56>
v = (vector) "<1.0, 2.3>"; // ZERO_VECTOR (Due to insufficient value)
rotation r;
r = (rotation) "<1.0, 2.3, 4.56, 1.0>"; // <1.0, 2.3, 4.56, 1.0>
r = (rotation) "<1.0, 2.3, 4.56>"; // ZERO_ROTATION (Due to insufficient value)
</lsl>
===Anwendung===
<lsl>default
{
 state_entry()
 {
 integer iUnixTime = llGetUnixTime(); 
 string sUnixTime = (string)unixTime;
 string sRegionTime = (string)llGetTimeOfDay();
 llSetObjectDesc(sUnixTime);
 llSetText(sRegionTime, <1.0, 0.0 ,0.0>, 1.0);
 }
}</lsl>
== Anmerkungen ==
*Der Compiler erlaubt explizites Typecasting auch an Stellen wo dies nicht unbedingt sinnvoll ist und nicht optimale Ergebnisse liefert. Nicht benötigte Typkonvertierung bläht den Code unnötig auf und verlangsamt dessen Ausführung.
== Anmerkungen ==
*Typkonvertierung von Float zu Integer entfernt bloß den Teil hinter dem Komma. Um zur nähesten Ganzzahl zu runden, verwenden Sie bitte llRound.
*Um die Elemente einer Liste auszulesen, verwenden Sie bitte die Funktionen.