Ständig im Unterricht
Frage
Ich habe versucht, eine VB-Skriptklasse mit einer Konstante zu erstellen und habe den Fehler 800A03EA erhalten.Ist es ein VBS-Fehler?Ist das nicht eine OOP-Grundregel?
Class customer
' comment it const and its works
const MAX_LEN=70
Private Name
Private Sub Class_Initialize
Name = ""
End Sub
' name property.
Public Property Get getName
getName = Name
End Property
Public Property Let letName(p_name)
Name = p_name
End Property
end class
Lösung
Der Dokumentation listet alle Anweisungen auf, die im Kontext von Klassen zulässig sind. Const
gehört nicht dazu und wird daher nicht unterstützt.Sie können das Problem umgehen, indem Sie private Mitgliedsvariablen verwenden, die Sie während der Instanziierung initialisieren (d. h.In Class_Initialize
):
Class customer
Private MAX_LEN
Private Name
Private Sub Class_Initialize
MAX_LEN = 70
Name = ""
End Sub
...
End Class
Wenn Instanzen der Klasse diesen Wert verfügbar machen sollen, können Sie ihn als schreibgeschützte Eigenschaft implementieren:
Class customer
Private MAX_LEN
Private Sub Class_Initialize
MAX_LEN = 70
End Sub
'read-only property, so no "Property Let/Set"
Public Property Get MaxLength
MaxLength = MAX_LEN
End Property
...
End Class
Allerdings da Ekkehard.Horner Richtig darauf hingewiesen, könnte der Wert noch durch objektinternen Code geändert werden.Wenn Unveränderlichkeit die Hauptanforderung für diesen Wert ist, sollten Sie ihn als globale Konstante implementieren.
Andere Tipps
Ich stimme mit Ansgar Wiechers ist Antwort , möchte aber eine andere Option vorschlagen.
Wenn die Immutabilität wichtiger ist als die Leistung, können Sie den Wert direkt in die Get einlegen und die Eigenschaft verwenden, um auf den Wert anstelle einer Variablen der Klassenstufe zu verweisen.
generasacodicetagpre.Eine private Variable (vielleicht mit einem Getter) gibt Ihnen einen Wert, der von außerhalb der Klasse nur schreibgeschützt ist. Der CLASS-Interne Code kann jedoch diesen Wert noch ändern.
also mit einem globalen const (vielleicht mit einem "Namespace" -Name-TEIL) eine bessere Problemumgehung in Fällen, in denen die Konstess am wichtigsten ist.