====== #-Operator, Pointer und validate ====== Der Value-Operator liefert eine Referenz auf den Speicher, auf den der Pointer zeigt. Das ist die Standardimplementation für einen Pointer-Typ. d is 3,1415; dp is ptr(d); // => double ptr; - dp ist gesetzt dp# : 4711.; //ok, da dp garantiert gesetzt ist. funcClear is code( dp is double ptr var ) // ptr is variabel { dp = null; }; funcPrint is code( dp is double ptr ) // double ist nicht variabel { valdate dp; print dp#$; }; funcPrint is code( d is double ) // double ist nicht variabel { print d$; }; func is code( dp is double ptr ) { // dp ist eventuell null; dp# : 4711.; validate dp { dp# : 4711; // ok funcPrint( dp ); // ok, ptr ist nicht variable funcPrint( dp# ); // ok, dp is validated funcClear( dp ); // ok, aber... // --- ab hier kann dp nicht mehr als validate garantiert werden funcPrint( dp ); // ok, es wird ein Pointer übergeben, damit muss funcPrint klarkommen. funcPrint( dp# ); // nicht ok, denn wir können dp nicht mehr garantieren. -> error } else { print "dp ist kein gültiger Pointer"; } }