Variablen

Es gibt globale Variablen, Variablen als Attribute von Objekten, und lokale Variablen mit Geltungsbereich nur innerhalb der aktuellen Methode.

Mögliche Datentypen (siehe dort) sind als primitive Datentypen number, text und truth state; als Referenzdatentypen können eigene und mitgelieferte Klassen verwendet werden.


Globale Variablen

Deklarieren von globalen Variablen, die nicht einem bestimmten Objekt zugeordnet sind:

Danger level is a number that varies.

Oder ebenso gut und vielleicht etwas vertrauter:

Danger level is a number variable.

Deklarieren von Attribut-Variablen

Deklarieren von Variablen, die als Attribut einer neuen Klasse verwendet werden:

A bank manager is a kind of person.
It has a text called job description. [auch: He has/She has/They have]
It has a number called age.
It has a truth state called busy. Busy is usually true. [mit Initialisierung]
It has a person called lawyer.

Deklarieren von Variablen, die als Attribut einer bestehenden Klasse zugefügt werden:

Every thing has a number called worth.

Deklarieren von Variablen, die als Attribut einem bestehenden Objekt zugefügt werden:

Max is a man. He has a number called age.

Deklarieren von unbenannten Variablen bei bestehenden Klassen:

A person can be good, bad or mediocre.
People usually are good. [Initialisierung]
Bank managers can be occupied or free. [mit genau diesen zwei Wert-Möglichkeiten]
Bank managers usually are occupied.  [Initialisierung]
Bank managers can be either asleep or awake. [mit diesen zwei Wert-Möglichkeiten, wobei not asleep das gleiche ist wie awake und umgekehrt]
Bank managers usually are awake.  [Initialisierung]

Diese unbenannten Variablen gibt es nur bei Klassendefinitionen; sie können keinem einzelnen Objekt hinzugefügt werden.
Wer will, kann den nicht booleschen unter ihnen doch noch einen Namen geben, intern haben sie ohnehin einen:

A person can be good, bad or mediocre (this is the goodness property).

Initialisierung von Variablen

Max is a bank director.
The job description of Max is "Big Man". [ text]
The age of Max is 42. [number]
The busy of Max is false. [truth state]
Max is mediocre. [unbenanntes Attribut, Enum-Typ]
Max is not occupied. [unbenanntes Attribut, boolean]
Max is not awake. [unbenanntes Attribut, boolean - not awake = asleep]
The lawyer of Max is Nathalie. [Referenzattribut]

Neuzuweisung von Werten an Variablen

Das geschieht mit dem Schlüsselwort now und ist nur innerhalb von Methoden möglich:

Now the age of Max is 42.
Increase the age of Max by one.
Decrease the age of Max by 1.

Variablen werden immer initialisiert, sie können nie den Wert null haben. Bevor man dem System überlässt, welchen Default-Wert er zu weist, sollte man bewusst einen Wert angeben. Zahlen und Text sind kein Problem, da ist der Standardwert 0 bzw. “”, bei nicht-primitiven Datentypen nimmt das Programm allerdings das erstbeste vom Typ passende Objekt zur Initialisierung.


Geltungsbereich Variablen

Alle Variablen sind public.


Lokale (temporäre) Variablen

Die Argumenten von Funktionen im engeren und weiteren Sinn (siehe dort) können innerhalb der Funktion als lokale Variablen verwendet werden:

To decide on what number is the square of (x - a number):
	decide on x times x.

Oder etwas Inform-spezifischer:

Instead of eating an edible plant (called the food):
	say "[The food] is okay. Lots of vitamins.";
	remove the food from play.

Innerhalb von Methoden im engeren und weiteren Sinn (siehe dort) können lokale Variablen deklariert und verwendet werden, wie bei dieser klassischen Potenzberechnungsmethode. Das geschieht mit dem Schlüsselwort let:

To decide what number is (base - a number) to the power of (exponent - a number):
	let the result be one;
	while exponent is greater than zero:
		now the result is the result times base;
		decrease exponent by one;
	decide on the result.

Schreibe einen Kommentar