- Dynamische Typisierung
-
Dynamische Typisierung (engl. dynamic typing) ist die Zuteilung des Typs einer Variablen zur Laufzeit eines Programms.
Im Gegensatz zur statischen Typisierung verzichtet man auf eine explizite Typisierung; der Typ einer Variablen ergibt sich aus dem Typ des Werts, der ihr zugewiesen wird. Erkauft wird dies mit gewissen Laufzeitnachteilen und erschwerter Fehlersuche.
Vor allem Skriptsprachen wie z. B. JavaScript, Python und Ruby verwenden die dynamische Typisierung.
Inhaltsverzeichnis
Beispiele
Python
Hier eine interaktive Python-Sitzung:
>>> a = 1 # a ist durch Zuweisung eine ganze Zahl >>> a += 1.0 # addiert die Gleitkommazahl 1.0 und ändert damit den Typ >>> a.upper() # Scheitert: a ist keine Zeichenkette Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'float' object has no attribute 'upper' >>> a # gibt den Wert von a aus 2.0 >>> a = "jetzt ist a ein String" >>> a += 1 # Scheitert: a ist jetzt ein String Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects >>> a.upper() 'JETZT IST A EIN STRING'
In Python haben Variablen keinen Typ, lediglich die Objekte, auf die die Variablen referenzieren, besitzen einen Typ. Die Fehlermeldung „… has no attribute 'upper'“ illustriert, dass der Python-Interpreter nicht unbedingt einen String verlangt, sondern mit einem beliebigen Objekt mit einer Methode upper zufrieden wäre (siehe Duck-Typing).
Boo
Beispiel von der Projektseite[1]
d as duck d = 5 // currently set to an integer. print d d += 10 // It can do everything an integer does. print d d = "Hi there" // sets it to a string. print d d = d.ToUpper() // It can do everything a string does. print d
Ausgabe:
5 15 Hi there HI THERE
Erläuterung des Beispiels
Es wird die Variable d angelegt und ihr wird der Datentyp duck zugewiesen. Dies ist kein richtiger Datentyp, sondern nur eine Art Container, der andere Datentypen annehmen kann. In der zweiten Zeile wird d der Integerwert 5 zugewiesen.
In Zeile 6 wird ihr die Zeichenkette Hi there zugewiesen. In anderen Programmiersprachen wie beispielsweise C# oder C++ würde dies jetzt zu einem Compiler-Fehler führen.
Der Boo-Compiler hingegen erkennt am Datentyp duck, dass sich der Datentyp der Variable d ändern kann.
Siehe auch
Quellen
- ↑ Boo-Projektseite, Stand 19. April 2006, 19.52 Uhr
Wikimedia Foundation.