J'ai trouvé un moyen d'étendre les classes dans VBScript, mais existe-t-il des moyens de passer des paramètres ou de surcharger le constructeur? J'utilise actuellement une fonction Init pour initialiser les propriétés, mais j'aimerais pouvoir le faire lorsque je crée l'objet.
Ceci est mon exemple de classe:Constructeurs de surcharge dans VBScript
Class Test
Private strText
Public Property Get Text
Text = strText
End Property
Public Property Let Text(strIn)
strText = strIn
End Property
Private Sub Class_Initialize()
Init
End Sub
Private Sub Class_Terminate()
End Sub
Private Function Init
strText = "Start Text"
End Function
End Class
Et je le crée
Set objTest = New Test
mais je voudrais faire quelque chose comme ça
Set objTest = New Test(strInitText)
Est-ce possible, ou est-ce l'objet ont être créé et initialisé dans deux setps?
C'est en 2011 et j'ai tous les deux googlé pour cela et j'ai aimé l'apprendre. J'aime refactoriser le vieux VBScript de la même façon que j'aime faire fonctionner un vieux 486. Je n'ai aucune idée – Chris
Vous devez envelopper le '(Nouveau Test)' entre parenthèses? Vous ne pouvez pas simplement faire, 'New Test (Array())'? = [ – crush
Je ne peux pas le tester rapidement mais pour autant que je me souvienne, les parenthèses sont obligatoires. Il n'y a pas de constructeur de classe donc 'New ClassName (arguments)' n'est pas une syntaxe valide dans VBScript. Les parenthèses indiquent clairement à l'analyseur que vous appliquez les arguments au résultat de 'New ClassName'. L'application d'arguments à un objet appelle la fonction marquée par défaut dans la définition de classe. – jammus