Zuweisung

FreeBASIC-Referenz » Operatoren in FreeBASIC » Zuweisung

Syntax A: Variable = Wert
Syntax B: Variable => Wert
Typ: Operator
Kategorie: Operatoren

Die Zuweisung von Werten wird in FreeBASIC üblicherweise mit '=' bewerkstelligt, es kann allerdings auch '=>' verwendet werden.

Beispiel 1:

Dim As Integer foo1 = 5
Dim As Integer foo2 => 7

Dim As Integer bar1(0 To ...) = {0, 1, 2, 3}
Dim As Integer bar2(0 To ...) => {4, 5, 6, 7}

In den meisten Fällen sind beide Zuweisungsoperatoren gleichbedeutend. Da '=' allerdings auch als Vergleichsoperator verwendet wird, gilt '=>' als expliziter Zuweisungsoperator.
Dies ist vor allem bei Funktionen mit einer Rückgabe 'by reference' wichtig, da die Zuweisung an eine solche Funktion durch den Compiler auch als Vergleich interpretiert werden könnte.

Beispiel 2:

Function f(ByRef s As String) ByRef As String
  Return s
End Function

Dim As String s = "foo"
Print f(s)

' f(s) = "bar"        ' <--- Achtung, Fehler!
Print f(s)

f(s) => "foobar"
Print f(s)

Sleep

Die auskommentierte Stelle wird in diesem Fall als 'f((s) = "bar")' interpretiert. Dabei handelt es sich also um einen Vergleich, der die Variable 's' und den String "bar" miteinander vergleicht und einen numerischen Wahrheitswert zurückliefert, der an die Funktion 'f()' übergeben wird. Da die Funktion allerdings einen String als Übergabeparameter erwartet, führt der Aufruf zwangsläufig zu einem Fehler.
Für diesen speziellen Fall muss '=>' verwendet werden, um dem Compiler zu signalisieren, dass eine explizite Zuweisung erwünscht ist.