BlitzMax: Types
Type-Definition
[Bearbeiten]Das am meisten bei BlitzMax genutzte Objekt ist eine "Klasse", die mit dem Keyword Type
definiert wird.. Hinter Type
folgt ein Name der Type-Definition, der es ermöglicht, verschiedene Types voneinander zu unterscheiden. Das Ende einer Type-Definition wird duch das Keyword EndType
gekennzeichnet.
Type EndType
Field
[Bearbeiten]Zwischen Type und EndType werden werden Eigenschaften mit dem Keyword Field
angelegt, denen wie bei Variablen nach dem Doppelpunkt-Operator der Datentyp angehangt wird. Field-Eigenschaften sind also Variablen, deren Gültigkeit auf den Bereich vor Type bis EndType begrenzt ist.
Type Person Field Vorname:String Field Nachname:String Field Geburtstag:String EndType
Dieses Type ist ein benutzerdefinierter Datentyp, der aber genau so wie ein Datentyp aus BlitzMax verwendet werden kann. Eine Variable wird in BlitzMax in folgender Form erstellt:
Gültigkeitsbereich
Identifer
:Datentyp
Da man mit Type
einen Datentyp erstellt, kann man zu diesem Datentyp auch Variablen definieren:
Local Test:Person
Null
[Bearbeiten]Der Identifer "Test" wird dadurch innerhalb des Gültigkeitsbereichs unlösbar mit dem Type "Person" verbunden und man kann deshalb im weiteren Programmverlauf "Test" ohne Angabe des Typenamens verwenden. Eine so definierte Variable hat zunächst jedoch noch keinen Wert, sondern nur ihren Defaultwert. Dieser Defaultwert ist bei Type-Objekten der Operator Null
(nicht 0, denn die Ziffer 0 ist der Defaultwert von Integerzahlen, der Operator Null ist der Defaultwert von Type-Objekten)
New
[Bearbeiten]Ein Type stellt man sich am besten als einen Bauplan vor, in dem beschrieben wird welche Eigenschaften ein Objekt hat. Jedoch nur mit dem Bauplan kann man noch nicht viel anfangen. Es müssen erst nach dem Bauplan Objekte erstellt werden, die man als "Instanzen" bezeichnet. Der Operator New
gefolgt von einem Typenamen gibt eine Instanz einer Typedefinition zurück:
Local Test:Person=New Person
. (Punkt)
[Bearbeiten]Um zu unterscheiden, welche Eigenschaft der Instanz angesprochen wird, kann man hinter dem Identifer der Variablen den Namen der Eigenschaft nach einem Punkt angeben. Der Punkt ist auch ein Operator, der die Type-Variable mit der Eigenschaft verbindet:
Test.Vorname = "Max" Test.Nachname = "Mustermann"
Type verschachteln
[Bearbeiten]Da Type eine Definition ist, kann man Types nich wie Blockanweisungen verschachteln. Aber weil eine Field-Eigenschaft auch eine Variable ist, kann man ein Field auch mit dem Datentyp eines anderen Type definieren
Type Person Field Vorname:String Field Nachname:String Field Geburtstag:Datum EndType Type Datum Field Tag:Byte Field Monat:Byte Field Jahr:Short EndType