Strings
In V können Strings mit dem Deklarationsoperator (:=
) deklariert und initialisiert werden und sind, wie andere Variablen in V auch, standardmäßig immutable
, d.h. unveränderlich. Man kann zur Definition einer Variable vom Typ string
sowohl doppelte (""
), als auch einfache (''
) Anführungszeichen verwenden. Bei der Verwendung von vfmt
werden doppelte Anführungszeichen in einzelne Anführungszeichen konvertiert, es sei denn der String enthält einzelne Anführungszeichen.
Um die Länge eines Strings zu ermitteln, kann man die .len
Methode verwenden.
String Interpolation
Es ist ebenfalls möglich Variablen in einen String zu verpacken und diesen damit zu "erweitern" (engl. interpolation = Erweiterung). Um eine Variable in einen String zu interpolieren, verwendet man $
vor dem Variablennamen:
Um komplexere Ausdrücke zu interpolieren kann man nach dem Dollarzeichen noch geschweifte Klammern hinzufügen (${}
), um so den Ausdruck darin zu interpolieren.
Konkatenation
Strings können mittels des +
Operators auch aneinander gehängt (konkateniert) werden. Da Strings ebenfalls standardmäßig unveränderlich sind, kann man nur Strings konkatenieren, die mit dem mut
Schlüsselwort deklariert und initialisiert wurden.
Das Anhängen von string
s kann man entweder mit Konkatenation oder dem +=
Operator erreichen.
In V werden die Daten eines Strings in UTF-8 codiert, der String wird dann als schreibgeschützes Byte-Array repräsentiert.
Notizen
Unter Verwendung some_string[start..end]
Syntax, muyss beachtet werden, dass end
nicht mehr enthalten ist.
Alle Operatoren in V können nur verwendet werden, wenn auf beiden Seiten des Operators Variablen des selben Typs stehen. Der nachstehende Code kann nicht kompiliert werden, weil age
vom Typ int
ist.
Daher muss die Variable zuerst mit Hilfe der .str()
Funktion in einen String konvertiert werden, oder man verwendet String-Interpolation (empfohlener Ansatz).
Es können weiterhin auch Character literals mit ``
definiert werden. Zusätzlich gibt es die Möglichkeit sogenannte Raw-Strings mit einem vorangestellten r
zu definieren, diese werden nicht "escaped".
Last updated