====== unimplemented ====== ...ist ähnlich Null ein besonderer Marker und als Rückgabewert gedacht, wenn Funktionen noch nicht implementiert sind, um sich von false bzw. null zu unterscheiden, bzw. im Quelltext suchbar zu sein. getValue is code( a, b, c is int ) as bool { if( a == 0 ) return false; // false meint false if( b == 1 ) return true; return unimplemented; // liefert false, aber hier muss noch was gemacht werden. } ===== Eigene Implementationen von unimplemented ===== Bei den eingebauten Datentypen entspricht ''unimplemented'' dem Wert ''null''. Wie null kann ''unimplemented'' aber spezialisiert werden: func is code as string : return unimplemented; print func(); liefert: "" enhance string { operator unimplemented() override : { static temp : "unimplemented"; return temp; }; }; func is code as string : return unimplemented; print func(); liefert: "unimplemented" Die Default-Implementierung ist operator unimplemented() : null; Hier gilt: object::null == object::unimplemented => true ptr(object::null) == ptr(object::unimplemented) => true Für einfache Objekte, wie string sollte es zwei "Empty-Objects" geben, um zwischen null und unimplemented zu unterscheiden string::null == string::unimplemented => true ptr(string::null) == ptr(string::unimplemented) => false