Strings

Strings, auf Deutsch auch "Zeichenketten", sind in DestinyScript, wie überall anders auch, zum Speichern von Texten gedacht und können beinahe beliebig viel Inhalt umfassen, verbrauchen dann jedoch entsprechend viel Speicher. Die Grenze liegt technisch bei knapp unter zwei Gigabyte, diese auszureizen wäre allerdings sehr unvernünftig.

Einfache Zuweisung

Am einfachsten ist das Setzen eines Strings, der inhaltlich lediglich eine Zeile umfasst. Die Zuweisung funktioniert genau wie beim Setzen von Speicherbereichen anderer Datentypen. Der Inhalt eines Strings wird in Anführungszeichen ("") verpackt. Falls Anführungszeichen selbst innerhalb des Strings gebraucht werden, können sie eingefügt werden, indem für jedes immer zwei hintereinandergeschrieben werden, siehe zweites Beispiel.

$
// Beliebig langer Stringtext.
a[1] = "Beliebig langer Stringtext.";
// Das neunte und zehnte Wort dieses Satzes sind "Schwarzwälder Kirschtorte" in Anführungszeichen.
a[2] = "Das neunte und zehnte Wort dieses Satzes sind ""Schwarzwälder Kirschtorte"" in Anführungszeichen.";

Heredoc-Syntax

Zum Anlegen mehrzeiliger Texte kann das in einigen Programmiersprachen geläufige Heredoc-Konzept genutzt werden. Hier beginnt und endet der Wert des Strings nicht mit Anführungszeichen, sondern fängt mit der Zeichenfolge "<<<" an, der ein sogenannter "Delimiter" folgt, der eine beliebige Zeichenkette aus Buchstaben, Zahlen und Unterstrichen sein kann, jedoch immer mit einem Buchstaben beginnen muss. Als Beispiel dient in diesem Fall die Bezeichnung "HEREDOC_END". Sobald der gewählte Delimiter direkt am Anfang einer späteren Zeile wiederholt wird, endet der String. Delimiter-Zeilen selbst werden nicht ins Ergebnis eingefügt. Es ist nicht möglich, in den Zwischenzeilen Kommentare zu verfassen.

$
a[1] = <<<HEREDOC_END
Der String beginnt hier.
Dies ist die zweite Zeile.
HEREDOC_ENDNOTREALLY       // Das Wort ist nur enthalten, das zählt nicht.
 HEREDOC_END               // Befindet sich nicht am Zeilenanfang.

HEREDOC_END;               // Hier ist der String wirklich vorbei.

Heredoc mit Scriptcode

Folgt dem Heredoc-Delimiter bei der ersten Erwähnung das Dollarzeichen ("$"), also z.B. "<<<HEREDOC_END$", kann in die nachfolgenden Zeilen, die den Stringinhalt definieren, an beliebigen Punkten mit "$()" Scriptcode eingefügt werden, dessen Endausgabewert an der jeweiligen Stelle in den String eingefügt wird. Beim Schließen von Heredoc wird das zuvor angehängte "$" weggelassen.

$
a[1] = <<<HEREDOC_END$
 Name: $(Actor[1].Name)
Level: $(Actor[1].Level)
  Erf: $(Actor[1].EXP)
 Noch: $(Actor[1].NextEXPDiff)

HEREDOC_END;

Strings verketten

Zeichenketten werden über den Konkatenations-Operator ".." miteinander verbunden, wahlweise ist auch der Operator zur Addition ("+") möglich, wird jedoch nicht empfohlen.

$
a[1] = "abc";                  // "abc"
a[2] = "XYZ" .. a[1] .. "XYZ"; // "XYZabcXYZ"

Zeilenumbrüche

Auch in einer einzeiligen Zuweisung können Zeilenumbrüche eingefügt werden. In diesem Fall jedoch nicht durch einen echten Umbruch, sondern durch das Zwischenschieben der "CRLF"-Konstante (ohne Anführungszeichen). Die Bezeichnung dieser Konstante steht für "Carriage Return Line Feed".

$
/*
  Erste Zeile
  Zweite Zeile
*/

a[1] = "Erste Zeile" .. CRLF .. "Zweite Zeile";