Ich bin neu bei Scala und folge einem der Beispiele, um Swing in Scala arbeiten zu lassen und ich habe eine Frage. Basierend auf,
%Vor% Warum muss ich in EditDone ('Fahrenheit') und EditDone ('celsius') backquote (') verwenden, um meine Textfeldkomponenten zu identifizieren, z. fahrenheit
und celsius
? Warum kann ich nicht einfach EditDone(fahrenheit)
verwenden?
Danke
Dies hat etwas mit dem Mustervergleich zu tun. Wenn Sie einen Kleinbuchstaben innerhalb eines Mustervergleichs verwenden:
%Vor% Dann wird das übereinstimmende Objekt (das Ereignis in diesem Fall) mit jedem EditDone
-Ereignis auf einem beliebigen Widget abgeglichen. Es bindet den Verweis auf das Widget an den Namen fahrenheit
. Das fahrenheit
wird zu einem neuen Wert in diesem Fall.
Wenn Sie jedoch Backticks verwenden:
%Vor% dann ist die Musterübereinstimmung nur erfolgreich, wenn sich das EditDone
-Ereignis auf das vorhandene Objekt bezieht, das durch den zuvor definierten Wert fahrenheit
referenziert wird.
Beachten Sie, dass, wenn der Name des Werts fahrenheit
Großbuchstaben wäre, wie Fahrenheit
, Sie keine Backticks verwenden müssten - es wäre so, als hätten Sie sie eingefügt. Dies ist nützlich, wenn Sie Konstanten oder Objekte im Gültigkeitsbereich haben, mit denen Sie übereinstimmen möchten - diese haben normalerweise Großbuchstaben.
extrahiert einen Wert aus EditDone und vergleicht ihn mit der vorhandenen lokalen Variablen fahrenheit
, während
extrahiert einen Wert aus EditDone, erstellt eine neue lokale Variable fahrenheit
(dadurch wird die vorhandene überschrieben) und weist den extrahierten Wert der neuen Variablen zu.